lte-parser: add autogenerated parser for LTE RRC messages

This crate's code is nearly entirely autogenerated using an ASN.1
parsing tool called hampi. The code in src/lte_rrc.rs shouldn't be
manually modified, and should only be regenerated using hampi (or a
similar tool).
This commit is contained in:
Will Greenberg
2024-01-30 10:38:31 -08:00
parent 25e3d16e9f
commit 97678bf8ca
12 changed files with 71140 additions and 17 deletions
Generated
+495 -17
View File
@@ -59,6 +59,104 @@ dependencies = [
"libc",
]
[[package]]
name = "anes"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
[[package]]
name = "anstream"
version = "0.6.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
dependencies = [
"anstyle",
"anstyle-parse",
"anstyle-query",
"anstyle-wincon",
"colorchoice",
"utf8parse",
]
[[package]]
name = "anstyle"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc"
[[package]]
name = "anstyle-parse"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c"
dependencies = [
"utf8parse",
]
[[package]]
name = "anstyle-query"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648"
dependencies = [
"windows-sys 0.52.0",
]
[[package]]
name = "anstyle-wincon"
version = "3.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7"
dependencies = [
"anstyle",
"windows-sys 0.52.0",
]
[[package]]
name = "asn1-codecs"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e4ed1fe0647213e739f7ea78f50d3d0f6f9bef7285f6d8672aaca8365decfc3"
dependencies = [
"bitvec",
"log",
"proc-macro2",
"syn 1.0.109",
]
[[package]]
name = "asn1-compiler"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1d056f38f3e98ffe9808e6a482d1527e4ded46e72b3dbe77305f5508e76c5f6"
dependencies = [
"bitvec",
"clap",
"env_logger 0.10.2",
"heck",
"lazy_static",
"log",
"proc-macro2",
"quote",
"regex",
"topological-sort",
]
[[package]]
name = "asn1_codecs_derive"
version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "394acf8791d3d345ed71e2e820355c9f8ad4202a99b97e59fb7b6595b18f28cd"
dependencies = [
"asn1-codecs",
"bitvec",
"log",
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "async-trait"
version = "0.1.77"
@@ -70,6 +168,17 @@ dependencies = [
"syn 2.0.48",
]
[[package]]
name = "atty"
version = "0.2.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
dependencies = [
"hermit-abi 0.1.19",
"libc",
"winapi",
]
[[package]]
name = "autocfg"
version = "1.1.0"
@@ -146,6 +255,15 @@ dependencies = [
"rustc-demangle",
]
[[package]]
name = "basic-toml"
version = "0.1.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2db21524cad41c5591204d22d75e1970a2d1f71060214ca931dc7d5afe2c14e5"
dependencies = [
"serde",
]
[[package]]
name = "bitflags"
version = "1.3.2"
@@ -166,6 +284,7 @@ checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c"
dependencies = [
"funty",
"radium",
"serde",
"tap",
"wyz",
]
@@ -197,6 +316,12 @@ version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
[[package]]
name = "cast"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
version = "1.0.83"
@@ -227,6 +352,79 @@ dependencies = [
"windows-targets 0.52.0",
]
[[package]]
name = "ciborium"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e"
dependencies = [
"ciborium-io",
"ciborium-ll",
"serde",
]
[[package]]
name = "ciborium-io"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757"
[[package]]
name = "ciborium-ll"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9"
dependencies = [
"ciborium-io",
"half",
]
[[package]]
name = "clap"
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f"
dependencies = [
"clap_builder",
"clap_derive",
]
[[package]]
name = "clap_builder"
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99"
dependencies = [
"anstream",
"anstyle",
"clap_lex",
"strsim 0.11.0",
]
[[package]]
name = "clap_derive"
version = "4.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "307bc0538d5f0f83b8248db3087aa92fe504e4691294d0c96c0eabc33f47ba47"
dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.48",
]
[[package]]
name = "clap_lex"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce"
[[package]]
name = "colorchoice"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
name = "core-foundation-sys"
version = "0.8.6"
@@ -248,6 +446,73 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "criterion"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f"
dependencies = [
"anes",
"cast",
"ciborium",
"clap",
"criterion-plot",
"is-terminal",
"itertools",
"num-traits",
"once_cell",
"oorandom",
"plotters",
"rayon",
"regex",
"serde",
"serde_derive",
"serde_json",
"tinytemplate",
"walkdir",
]
[[package]]
name = "criterion-plot"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
dependencies = [
"cast",
"itertools",
]
[[package]]
name = "crossbeam-deque"
version = "0.8.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
dependencies = [
"crossbeam-epoch",
"crossbeam-utils",
]
[[package]]
name = "crossbeam-epoch"
version = "0.9.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
dependencies = [
"crossbeam-utils",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345"
[[package]]
name = "crunchy"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7"
[[package]]
name = "darling"
version = "0.14.4"
@@ -268,7 +533,7 @@ dependencies = [
"ident_case",
"proc-macro2",
"quote",
"strsim",
"strsim 0.10.0",
"syn 1.0.109",
]
@@ -318,6 +583,25 @@ dependencies = [
"syn 1.0.109",
]
[[package]]
name = "either"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "env_logger"
version = "0.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a12e6657c4c97ebab115a42dcee77225f7f482cdd841cf7088c657a42e9e00e7"
dependencies = [
"atty",
"humantime",
"log",
"regex",
"termcolor",
]
[[package]]
name = "env_logger"
version = "0.10.2"
@@ -432,6 +716,12 @@ version = "0.28.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253"
[[package]]
name = "glob"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "h2"
version = "0.4.2"
@@ -451,6 +741,16 @@ dependencies = [
"tracing",
]
[[package]]
name = "half"
version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc52e53916c08643f1b56ec082790d1e86a32e58dc5268f897f313fbae7b4872"
dependencies = [
"cfg-if",
"crunchy",
]
[[package]]
name = "hashbrown"
version = "0.14.3"
@@ -461,12 +761,33 @@ dependencies = [
"allocator-api2",
]
[[package]]
name = "heck"
version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
[[package]]
name = "hermit-abi"
version = "0.1.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
dependencies = [
"libc",
]
[[package]]
name = "hermit-abi"
version = "0.3.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d3d0e0f38255e7fa3cf31335b3a56f05febd18025f4db5ef7a0cfb4f8da651f"
[[package]]
name = "hex"
version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
[[package]]
name = "http"
version = "1.0.0"
@@ -618,11 +939,20 @@ version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bad00257d07be169d870ab665980b06cdb366d792ad690bf2e76876dc503455"
dependencies = [
"hermit-abi",
"hermit-abi 0.3.4",
"rustix",
"windows-sys 0.52.0",
]
[[package]]
name = "itertools"
version = "0.10.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
dependencies = [
"either",
]
[[package]]
name = "itoa"
version = "1.0.10"
@@ -631,13 +961,19 @@ checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c"
[[package]]
name = "js-sys"
version = "0.3.67"
version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a1d36f1235bc969acba30b7f5990b864423a6068a10f7c90ae8f0112e3a59d1"
checksum = "406cda4b368d531c842222cf9d2600a9a4acce8d29423695379c6868a143a9ee"
dependencies = [
"wasm-bindgen",
]
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.153"
@@ -678,6 +1014,22 @@ version = "0.4.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
[[package]]
name = "lte-parser"
version = "0.1.0"
dependencies = [
"asn1-codecs",
"asn1-compiler",
"asn1_codecs_derive",
"bitvec",
"criterion",
"env_logger 0.9.3",
"hex",
"log",
"serde",
"trybuild",
]
[[package]]
name = "matchit"
version = "0.7.3"
@@ -741,7 +1093,7 @@ version = "1.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
dependencies = [
"hermit-abi",
"hermit-abi 0.3.4",
"libc",
]
@@ -760,6 +1112,12 @@ version = "1.19.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
[[package]]
name = "oorandom"
version = "11.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
[[package]]
name = "parking_lot"
version = "0.12.1"
@@ -838,6 +1196,34 @@ version = "0.3.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb"
[[package]]
name = "plotters"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45"
dependencies = [
"num-traits",
"plotters-backend",
"plotters-svg",
"wasm-bindgen",
"web-sys",
]
[[package]]
name = "plotters-backend"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609"
[[package]]
name = "plotters-svg"
version = "0.3.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab"
dependencies = [
"plotters-backend",
]
[[package]]
name = "proc-macro-crate"
version = "1.3.1"
@@ -908,7 +1294,7 @@ dependencies = [
"chrono",
"crc",
"deku",
"env_logger",
"env_logger 0.10.2",
"libc",
"log",
"pcap-file",
@@ -921,7 +1307,7 @@ version = "0.1.0"
dependencies = [
"axum",
"chrono",
"env_logger",
"env_logger 0.10.2",
"futures-core",
"futures-macro",
"include_dir",
@@ -936,6 +1322,26 @@ dependencies = [
"toml",
]
[[package]]
name = "rayon"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa7237101a77a10773db45d62004a272517633fbcc3df19d96455ede1122e051"
dependencies = [
"either",
"rayon-core",
]
[[package]]
name = "rayon-core"
version = "1.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
dependencies = [
"crossbeam-deque",
"crossbeam-utils",
]
[[package]]
name = "rdrand"
version = "0.4.0"
@@ -1037,6 +1443,15 @@ version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c"
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
[[package]]
name = "scopeguard"
version = "1.2.0"
@@ -1152,6 +1567,12 @@ version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
[[package]]
name = "strsim"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01"
[[package]]
name = "syn"
version = "1.0.109"
@@ -1225,6 +1646,16 @@ dependencies = [
"syn 2.0.48",
]
[[package]]
name = "tinytemplate"
version = "1.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "tokio"
version = "1.35.1"
@@ -1316,6 +1747,12 @@ dependencies = [
"winnow",
]
[[package]]
name = "topological-sort"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea68304e134ecd095ac6c3574494fc62b909f416c4fca77e440530221e549d3d"
[[package]]
name = "tower"
version = "0.4.13"
@@ -1364,6 +1801,21 @@ dependencies = [
"once_cell",
]
[[package]]
name = "trybuild"
version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9a9d3ba662913483d6722303f619e75ea10b7855b0f8e0d72799cf8621bb488f"
dependencies = [
"basic-toml",
"glob",
"once_cell",
"serde",
"serde_derive",
"serde_json",
"termcolor",
]
[[package]]
name = "unicase"
version = "2.7.0"
@@ -1379,6 +1831,12 @@ version = "1.0.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
[[package]]
name = "utf8parse"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "vcpkg"
version = "0.2.15"
@@ -1391,6 +1849,16 @@ version = "0.9.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "walkdir"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
dependencies = [
"same-file",
"winapi-util",
]
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
@@ -1399,9 +1867,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.90"
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1223296a201415c7fad14792dbefaace9bd52b62d33453ade1c5b5f07555406"
checksum = "c1e124130aee3fb58c5bdd6b639a0509486b0338acaaae0c84a5124b0f588b7f"
dependencies = [
"cfg-if",
"wasm-bindgen-macro",
@@ -1409,9 +1877,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.90"
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcdc935b63408d58a32f8cc9738a0bffd8f05cc7c002086c6ef20b7312ad9dcd"
checksum = "c9e7e1900c352b609c8488ad12639a311045f40a35491fb69ba8c12f758af70b"
dependencies = [
"bumpalo",
"log",
@@ -1424,9 +1892,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.90"
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3e4c238561b2d428924c49815533a8b9121c664599558a5d9ec51f8a1740a999"
checksum = "b30af9e2d358182b5c7449424f017eba305ed32a7010509ede96cdc4696c46ed"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@@ -1434,9 +1902,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.90"
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bae1abb6806dc1ad9e560ed242107c0f6c84335f1749dd4e8ddb012ebd5e25a7"
checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66"
dependencies = [
"proc-macro2",
"quote",
@@ -1447,9 +1915,19 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.90"
version = "0.2.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4d91413b1c31d7539ba5ef2451af3f0b833a005eb27a631cec32bc0635a8602b"
checksum = "4f186bd2dcf04330886ce82d6f33dd75a7bfcf69ecf5763b89fcde53b6ac9838"
[[package]]
name = "web-sys"
version = "0.3.68"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96565907687f7aceb35bc5fc03770a8a0471d82e479f25832f54a0e3f4b28446"
dependencies = [
"js-sys",
"wasm-bindgen",
]
[[package]]
name = "winapi"
+1
View File
@@ -5,5 +5,6 @@ members = [
"bin",
"serial",
"rootshell",
"lte-parser",
]
resolver = "2"
+32
View File
@@ -0,0 +1,32 @@
[package]
name = "lte-parser"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[build-dependencies]
asn1-compiler = "0.6.1"
asn1-codecs = "0.6.1"
asn1_codecs_derive = "0.6.1"
serde = { version = "1.0" , features = ["derive"]}
trybuild = { version = "1.0" }
hex = { version = "0.4" }
bitvec = { version = "1.0" , features = ["serde"]}
log = { version = "0.4" }
criterion = { version = "0.5" , features = ["rayon"]}
env_logger = { version = "0.9" }
[dependencies]
asn1-compiler = "0.6.1"
asn1-codecs = "0.6.1"
asn1_codecs_derive = "0.6.1"
bitvec = "1.0"
log = "0.4"
[dev-dependencies]
asn1-compiler = "0.6.1"
asn1-codecs = "0.6.1"
asn1_codecs_derive = "0.6.1"
bitvec = "1.0"
log = "0.4"
+27
View File
@@ -0,0 +1,27 @@
# Autogenerated LTE-RRC packet parsing
This crate contains [ASN.1](https://en.wikipedia.org/wiki/ASN.1) specs for LTE RRC message payloads, as well as autogenerated
Rust code for parsing these messages. We're using [hampi](https://github.com/ystero-dev/hampi/) as a parser generator, and it seems
3GPP protocols are encoded in the unaligned Packed Encoding Rules (or uPER) codec.
## Generating the parser
To install the hampi tools, run:
```
> cargo install asn1-compiler
```
To generate the parser, run:
```
> ampi-rs-asn1c --codec uper --module src/lte_rrc.rs -- specs/*
```
## Sourcing the ASN.1 files
3GPP, who develops the standards for 4G (and all the other G's) publishes ASN.1 specs for their protocols in these horrific Microsoft Word docs (e.g. [here](https://portal.3gpp.org/desktopmodules/Specifications/SpecificationDetails.aspx?specificationId=2440)). The ASN.1 blocks are denoted by `--ASN1START` and `--ASN1STOP` text, so extracting them automatically is possible using a script like [hampi's](https://github.com/ystero-dev/hampi/blob/master/examples/specs/parse_spec.py). Instead of doing this ourselves, we just sourced ours from [these](https://obj-sys.com/products/asn1apis/lte_3gpp_apis.php#lte_4g_apis).
# TODO
* document how to use them??? maybe toplevel doc comments in lib.rs?
* implement proof of concept binary using this to parse QMDL, summarize the packets
@@ -0,0 +1,670 @@
-- This file was generated by the Objective Systems ASN1C Compiler
-- (http://www.obj-sys.com). Version: 7.7.2, Date: 13-Oct-2023.
EUTRA-InterNodeDefinitions DEFINITIONS AUTOMATIC TAGS ::= BEGIN
IMPORTS
AntennaInfoCommon, AntennaInfoDedicated-v10i0, ARFCN-ValueEUTRA,
ARFCN-ValueEUTRA-v9e0, ARFCN-ValueEUTRA-r9, CellIdentity, C-RNTI,
DAPS-PowerCoordinationInfo-r16, DL-DCCH-Message, DRB-Identity,
DRB-ToReleaseList, DRB-ToReleaseList-r15, FreqBandIndicator-r11,
InDeviceCoexIndication-r11, LWA-Config-r13, MasterInformationBlock, maxBands
, maxFreq, maxDRB, maxDRBExt-r15, maxDRB-r15, maxSCell-r10, maxSCell-r13,
maxServCell-r10, maxServCell-r13, MBMSInterestIndication-r11, MeasConfig,
MeasGapConfig, MeasGapConfigPerCC-List-r14, MeasResultForRSSI-r13,
MeasResultListWLAN-r13, OtherConfig-r9, PhysCellId, P-Max,
PowerCoordinationInfo-r12, SidelinkUEInformation-r12, SL-CommConfig-r12,
SL-DiscConfig-r12, SubframeAssignment-r15, RadioResourceConfigDedicated,
RadioResourceConfigDedicated-v13c0, RadioResourceConfigDedicated-v1370,
RAN-NotificationAreaInfo-r15, RCLWI-Configuration-r13, RSRP-Range,
RSRQ-Range, RSRQ-Range-v1250, RS-SINR-Range-r13, SCellToAddModList-r10,
SCellToAddModList-v13c0, SCellToAddModListExt-r13,
SCellToAddModListExt-v13c0, SCG-ConfigPartSCG-r12, SCG-ConfigPartSCG-v12f0,
SCG-ConfigPartSCG-v13c0, SecurityAlgorithmConfig, SCellIndex-r10,
SCellIndex-r13, SCellToReleaseList-r10, SCellToReleaseListExt-r13,
ServCellIndex-r10, ServCellIndex-r13, ShortMAC-I,
MeasResultServFreqListNR-r15, MeasResultSSTD-r13, SL-V2X-ConfigDedicated-r14
, SystemInformationBlockType1, SystemInformationBlockType1-v890-IEs,
SystemInformationBlockType2, TDM-PatternConfig-r15,
UEAssistanceInformation-r11, UECapabilityInformation,
UE-CapabilityRAT-ContainerList, UE-RadioPagingInfo-r12,
WLANConnectionStatusReport-r13, WLAN-OffloadConfig-r12
FROM EUTRA-RRC-Definitions ;
-- Productions
Key-eNodeB-Star ::= BIT STRING (SIZE (256))
HandoverCommand-r8-IEs ::= SEQUENCE {
handoverCommandMessage [0] OCTET STRING (CONTAINING DL-DCCH-Message),
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
HandoverCommand ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
handoverCommand-r8 [0] HandoverCommand-r8-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
SCG-Config-v12i0b-IEs ::= SEQUENCE {
scg-RadioConfig-v12i0 [0] SCG-ConfigPartSCG-v12f0 OPTIONAL,
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
SCG-Config-v13c0-IEs ::= SEQUENCE {
scg-RadioConfig-v13c0 [0] SCG-ConfigPartSCG-v13c0 OPTIONAL,
--Following field is only for late non-critical extensions from REL-13 onwards
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
SCG-Config-v12i0a-IEs ::= SEQUENCE {
--Following field is only for late non-critical extensions from REL-12
lateNonCriticalExtension [0] OCTET STRING (CONTAINING SCG-Config-v12i0b-IEs)
OPTIONAL,
nonCriticalExtension [1] SCG-Config-v13c0-IEs OPTIONAL
}
SCG-Config-r12-IEs ::= SEQUENCE {
scg-RadioConfig-r12 [0] SCG-ConfigPartSCG-r12 OPTIONAL,
nonCriticalExtension [1] SCG-Config-v12i0a-IEs OPTIONAL
}
SCG-Config-r12 ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
scg-Config-r12 [0] SCG-Config-r12-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
AS-ConfigNR-r15 ::= SEQUENCE {
sourceRB-ConfigNR-r15 [0] OCTET STRING OPTIONAL,
sourceRB-ConfigSN-NR-r15 [1] OCTET STRING OPTIONAL,
sourceOtherConfigSN-NR-r15 [2] OCTET STRING OPTIONAL
}
AS-Config-v1550 ::= SEQUENCE {
tdm-PatternConfig-r15 [0] SEQUENCE {
subframeAssignment-r15 [0] SubframeAssignment-r15,
harq-Offset-r15 [1] INTEGER (0..9)
} OPTIONAL,
p-MaxEUTRA-r15 [1] P-Max OPTIONAL
}
AS-ConfigNR-v1570 ::= SEQUENCE {
sourceSCG-ConfiguredNR-r15 [0] ENUMERATED { true(0) }
}
AS-ConfigNR-v1620 ::= SEQUENCE {
tdm-PatternConfig2-r16 [0] EXPLICIT TDM-PatternConfig-r15
}
AS-Config ::= SEQUENCE {
sourceMeasConfig [0] MeasConfig,
sourceRadioResourceConfig [1] RadioResourceConfigDedicated,
sourceSecurityAlgorithmConfig [2] SecurityAlgorithmConfig,
sourceUE-Identity [3] C-RNTI,
sourceMasterInformationBlock [4] MasterInformationBlock,
sourceSystemInformationBlockType1 [5] SystemInformationBlockType1 (
WITH COMPONENTS {..., nonCriticalExtension ABSENT}),
sourceSystemInformationBlockType2 [6] SystemInformationBlockType2,
antennaInfoCommon [7] AntennaInfoCommon,
sourceDl-CarrierFreq [8] ARFCN-ValueEUTRA,
...,
[[
sourceSystemInformationBlockType1Ext [9] OCTET STRING (CONTAINING
SystemInformationBlockType1-v890-IEs) OPTIONAL,
sourceOtherConfig-r9 [10] OtherConfig-r9
]],
[[
sourceSCellConfigList-r10 [11] SCellToAddModList-r10 OPTIONAL
]],
[[
sourceConfigSCG-r12 [12] SCG-Config-r12 OPTIONAL
]],
[[
as-ConfigNR-r15 [13] AS-ConfigNR-r15 OPTIONAL
]],
[[
as-Config-v1550 [14] AS-Config-v1550 OPTIONAL
]],
[[
as-ConfigNR-v1570 [15] AS-ConfigNR-v1570 OPTIONAL
]],
[[
as-ConfigNR-v1620 [16] AS-ConfigNR-v1620 OPTIONAL
]]
}
CandidateCellInfo-r10 ::= SEQUENCE {
--cellIdentification
physCellId-r10 [0] PhysCellId,
dl-CarrierFreq-r10 [1] ARFCN-ValueEUTRA,
--available measurement results
rsrpResult-r10 [2] RSRP-Range OPTIONAL,
rsrqResult-r10 [3] RSRQ-Range OPTIONAL,
...,
[[
dl-CarrierFreq-v1090 [4] ARFCN-ValueEUTRA-v9e0 OPTIONAL
]],
[[
rsrqResult-v1250 [5] RSRQ-Range-v1250 OPTIONAL
]],
[[
rs-sinr-Result-r13 [6] RS-SINR-Range-r13 OPTIONAL
]]
}
CandidateCellInfoList-r10 ::= SEQUENCE (SIZE (1..maxFreq)) OF CandidateCellInfo-r10
RRM-Config ::= SEQUENCE {
ue-InactiveTime [0] ENUMERATED { s1(0), s2(1), s3(2), s5(3), s7(4), s10(5),
s15(6), s20(7), s25(8), s30(9), s40(10), s50(11), min1(12), min1s20c(13)
, min1s40(14), min2(15), min2s30(16), min3(17), min3s30(18), min4(19),
min5(20), min6(21), min7(22), min8(23), min9(24), min10(25), min12(26),
min14(27), min17(28), min20(29), min24(30), min28(31), min33(32),
min38(33), min44(34), min50(35), hr1(36), hr1min30(37), hr2(38),
hr2min30(39), hr3(40), hr3min30(41), hr4(42), hr5(43), hr6(44), hr8(45),
hr10(46), hr13(47), hr16(48), hr20(49), day1(50), day1hr12(51), day2(52)
, day2hr12(53), day3(54), day4(55), day5(56), day7(57), day10(58),
day14(59), day19(60), day24(61), day30(62), dayMoreThan30(63) } OPTIONAL,
...,
[[
candidateCellInfoList-r10 [1] CandidateCellInfoList-r10 OPTIONAL
]],
[[
candidateCellInfoListNR-r15 [2] MeasResultServFreqListNR-r15 OPTIONAL
]]
}
AdditionalReestabInfo ::= SEQUENCE {
cellIdentity [0] CellIdentity,
key-eNodeB-Star [1] Key-eNodeB-Star,
shortMAC-I [2] ShortMAC-I
}
AdditionalReestabInfoList ::= SEQUENCE (SIZE (1..maxReestabInfo)) OF AdditionalReestabInfo
ReestablishmentInfo ::= SEQUENCE {
sourcePhysCellId [0] PhysCellId,
targetCellShortMAC-I [1] ShortMAC-I,
additionalReestabInfoList [2] AdditionalReestabInfoList OPTIONAL,
...
}
AS-Context ::= SEQUENCE {
reestablishmentInfo [0] ReestablishmentInfo OPTIONAL -- Cond HO
}
AS-Config-v10j0 ::= SEQUENCE {
antennaInfoDedicatedPCell-v10i0 [0] AntennaInfoDedicated-v10i0 OPTIONAL
}
AS-Config-v13c0 ::= SEQUENCE {
radioResourceConfigDedicated-v13c01 [0] RadioResourceConfigDedicated-v1370
OPTIONAL,
radioResourceConfigDedicated-v13c02 [1] RadioResourceConfigDedicated-v13c0
OPTIONAL,
sCellToAddModList-v13c0 [2] SCellToAddModList-v13c0 OPTIONAL,
sCellToAddModListExt-v13c0 [3] SCellToAddModListExt-v13c0 OPTIONAL
}
HandoverPreparationInformation-v13c0-IEs ::= SEQUENCE {
as-Config-v13c0 [0] AS-Config-v13c0 OPTIONAL,
--Following field is only for late non-critical extensions from REL-13
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
HandoverPreparationInformation-v10x0-IEs ::= SEQUENCE {
--Following field is only for late non-critical extensions from REL-10 to REL-12
lateNonCriticalExtension [0] OCTET STRING OPTIONAL,
nonCriticalExtension [1] HandoverPreparationInformation-v13c0-IEs OPTIONAL
}
HandoverPreparationInformation-v10j0-IEs ::= SEQUENCE {
as-Config-v10j0 [0] AS-Config-v10j0 OPTIONAL,
nonCriticalExtension [1] HandoverPreparationInformation-v10x0-IEs OPTIONAL
}
-- Late non-critical extensions:
HandoverPreparationInformation-v9j0-IEs ::= SEQUENCE {
--Following field is only for pre REL-10 late non-critical extensions
lateNonCriticalExtension [0] OCTET STRING OPTIONAL,
nonCriticalExtension [1] HandoverPreparationInformation-v10j0-IEs OPTIONAL
}
AS-Config-v9e0 ::= SEQUENCE {
sourceDl-CarrierFreq-v9e0 [0] ARFCN-ValueEUTRA-v9e0
}
AS-Context-v1130 ::= SEQUENCE {
idc-Indication-r11 [0] OCTET STRING (CONTAINING InDeviceCoexIndication-r11)
OPTIONAL, -- Cond HO2
mbmsInterestIndication-r11 [1] OCTET STRING (CONTAINING
MBMSInterestIndication-r11) OPTIONAL, -- Cond HO2
ueAssistanceInformation-r11 [2] OCTET STRING (CONTAINING
UEAssistanceInformation-r11) OPTIONAL,
...,
[[
sidelinkUEInformation-r12 [3] OCTET STRING (CONTAINING
SidelinkUEInformation-r12) OPTIONAL
]],
[[
sourceContextEN-DC-r15 [4] OCTET STRING OPTIONAL
]],
[[
selectedbandCombinationInfoEN-DC-v1540 [5] OCTET STRING OPTIONAL
]]
}
AS-Config-v1250 ::= SEQUENCE {
sourceWlan-OffloadConfig-r12 [0] WLAN-OffloadConfig-r12 OPTIONAL,
sourceSL-CommConfig-r12 [1] SL-CommConfig-r12 OPTIONAL,
sourceSL-DiscConfig-r12 [2] SL-DiscConfig-r12 OPTIONAL
}
AS-Config-v1320 ::= SEQUENCE {
sourceSCellConfigList-r13 [0] SCellToAddModListExt-r13 OPTIONAL,
sourceRCLWI-Configuration-r13 [1] EXPLICIT RCLWI-Configuration-r13 OPTIONAL
}
AS-Context-v1320 ::= SEQUENCE {
wlanConnectionStatusReport-r13 [0] OCTET STRING (CONTAINING
WLANConnectionStatusReport-r13) OPTIONAL -- Cond HO2
}
AS-Config-v1430 ::= SEQUENCE {
sourceSL-V2X-CommConfig-r14 [0] SL-V2X-ConfigDedicated-r14 OPTIONAL,
sourceLWA-Config-r14 [1] LWA-Config-r13 OPTIONAL,
sourceWLAN-MeasResult-r14 [2] MeasResultListWLAN-r13 OPTIONAL
}
ConfigRestrictInfoDAPS-r16 ::= SEQUENCE {
maxSCH-TB-BitsDL-r16 [0] INTEGER (1..100) OPTIONAL, -- Cond HO2
maxSCH-TB-BitsUL-r16 [1] INTEGER (1..100) OPTIONAL -- Cond HO2
}
AS-Context-v1610 ::= SEQUENCE {
sidelinkUEInformationNR-r16 [0] OCTET STRING OPTIONAL, -- Cond HO3
ueAssistanceInformationNR-r16 [1] OCTET STRING OPTIONAL, -- Cond HO3
configRestrictInfoDAPS-r16 [2] ConfigRestrictInfoDAPS-r16 OPTIONAL -- Cond HO2
}
AS-Context-v1620 ::= SEQUENCE {
ueAssistanceInformationNR-SCG-r16 [0] OCTET STRING OPTIONAL -- Cond HO2
}
ConfigRestrictInfoDAPS-v1630 ::= SEQUENCE {
daps-PowerCoordinationInfo-r16 [0] DAPS-PowerCoordinationInfo-r16 OPTIONAL -- Cond HO2
}
AS-Context-v1630 ::= SEQUENCE {
configRestrictInfoDAPS-v1630 [0] ConfigRestrictInfoDAPS-v1630 OPTIONAL -- Cond HO2
}
AS-Config-v1700 ::= SEQUENCE {
scg-State-r17 [0] ENUMERATED { deactivated(0) } OPTIONAL
}
HandoverPreparationInformation-v1700-IEs ::= SEQUENCE {
as-Config-v1700 [0] AS-Config-v1700 OPTIONAL, --Cond HO5
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
HandoverPreparationInformation-v1630-IEs ::= SEQUENCE {
as-Context-v1630 [0] AS-Context-v1630 OPTIONAL, --Cond HO2
nonCriticalExtension [1] HandoverPreparationInformation-v1700-IEs OPTIONAL
}
HandoverPreparationInformation-v1620-IEs ::= SEQUENCE {
as-Context-v1620 [0] AS-Context-v1620 OPTIONAL, --Cond HO2
nonCriticalExtension [1] HandoverPreparationInformation-v1630-IEs OPTIONAL
}
HandoverPreparationInformation-v1610-IEs ::= SEQUENCE {
as-Context-v1610 [0] AS-Context-v1610 OPTIONAL, --Cond HO5
nonCriticalExtension [1] HandoverPreparationInformation-v1620-IEs OPTIONAL
}
HandoverPreparationInformation-v1540-IEs ::= SEQUENCE {
sourceRB-ConfigIntra5GC-r15 [0] OCTET STRING OPTIONAL, --Cond HO4
nonCriticalExtension [1] HandoverPreparationInformation-v1610-IEs OPTIONAL
}
HandoverPreparationInformation-v1530-IEs ::= SEQUENCE {
ran-NotificationAreaInfo-r15 [0] EXPLICIT RAN-NotificationAreaInfo-r15
OPTIONAL,
nonCriticalExtension [1] HandoverPreparationInformation-v1540-IEs OPTIONAL
}
HandoverPreparationInformation-v1430-IEs ::= SEQUENCE {
as-Config-v1430 [0] AS-Config-v1430 OPTIONAL, -- Cond HO2
makeBeforeBreakReq-r14 [1] ENUMERATED { true(0) } OPTIONAL, -- Cond HO2
nonCriticalExtension [2] HandoverPreparationInformation-v1530-IEs OPTIONAL
}
HandoverPreparationInformation-v1320-IEs ::= SEQUENCE {
as-Config-v1320 [0] AS-Config-v1320 OPTIONAL, -- Cond HO2
as-Context-v1320 [1] AS-Context-v1320 OPTIONAL, -- Cond HO2
nonCriticalExtension [2] HandoverPreparationInformation-v1430-IEs OPTIONAL
}
HandoverPreparationInformation-v1250-IEs ::= SEQUENCE {
ue-SupportedEARFCN-r12 [0] ARFCN-ValueEUTRA-r9 OPTIONAL, -- Cond HO3
as-Config-v1250 [1] AS-Config-v1250 OPTIONAL, -- Cond HO2
nonCriticalExtension [2] HandoverPreparationInformation-v1320-IEs OPTIONAL
}
HandoverPreparationInformation-v1130-IEs ::= SEQUENCE {
as-Context-v1130 [0] AS-Context-v1130 OPTIONAL, -- Cond HO2
nonCriticalExtension [1] HandoverPreparationInformation-v1250-IEs OPTIONAL
}
-- Regular non-critical extensions:
HandoverPreparationInformation-v9e0-IEs ::= SEQUENCE {
as-Config-v9e0 [0] AS-Config-v9e0 OPTIONAL, -- Cond HO2
nonCriticalExtension [1] HandoverPreparationInformation-v1130-IEs OPTIONAL
}
HandoverPreparationInformation-v9d0-IEs ::= SEQUENCE {
lateNonCriticalExtension [0] OCTET STRING (CONTAINING
HandoverPreparationInformation-v9j0-IEs) OPTIONAL,
nonCriticalExtension [1] HandoverPreparationInformation-v9e0-IEs OPTIONAL
}
HandoverPreparationInformation-v920-IEs ::= SEQUENCE {
ue-ConfigRelease-r9 [0] ENUMERATED { rel9(0), rel10(1), rel11(2), rel12(3),
v10j0(4), v11e0(5), v1280(6), rel13(7), ..., rel14(8), rel15(9),
rel16(10), rel17(11) } OPTIONAL, -- Cond HO2
nonCriticalExtension [1] HandoverPreparationInformation-v9d0-IEs OPTIONAL
}
HandoverPreparationInformation-r8-IEs ::= SEQUENCE {
ue-RadioAccessCapabilityInfo [0] UE-CapabilityRAT-ContainerList,
as-Config [1] AS-Config OPTIONAL, -- Cond HO
rrm-Config [2] RRM-Config OPTIONAL,
as-Context [3] AS-Context OPTIONAL, -- Cond HO
nonCriticalExtension [4] HandoverPreparationInformation-v920-IEs OPTIONAL
}
HandoverPreparationInformation ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
handoverPreparationInformation-r8 [0]
HandoverPreparationInformation-r8-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
SCG-ConfigRestrictInfo-r12 ::= SEQUENCE {
maxSCH-TB-BitsDL-r12 [0] INTEGER (1..100),
maxSCH-TB-BitsUL-r12 [1] INTEGER (1..100)
}
MeasResultServCellSCG-r12 ::= SEQUENCE {
servCellId-r12 [0] ServCellIndex-r10,
measResultSCell-r12 [1] SEQUENCE {
rsrpResultSCell-r12 [0] RSRP-Range,
rsrqResultSCell-r12 [1] RSRQ-Range
},
...,
[[
servCellId-r13 [2] ServCellIndex-r13 OPTIONAL,
measResultSCell-v1310 [3] SEQUENCE {
rs-sinr-ResultSCell-r13 [0] RS-SINR-Range-r13
} OPTIONAL
]]
}
MeasResultServCellListSCG-r12 ::= SEQUENCE (SIZE (1..maxServCell-r10)) OF
MeasResultServCellSCG-r12
DRB-InfoSCG-r12 ::= SEQUENCE {
eps-BearerIdentity-r12 [0] INTEGER (0..15) OPTIONAL, -- Cond DRB-Setup
drb-Identity-r12 [1] DRB-Identity,
drb-Type-r12 [2] ENUMERATED { split(0), scg(1) } OPTIONAL,
...
}
DRB-InfoListSCG-r12 ::= SEQUENCE (SIZE (1..maxDRB)) OF DRB-InfoSCG-r12
Cell-ToAddMod-r12 ::= SEQUENCE {
sCellIndex-r12 [0] SCellIndex-r10,
cellIdentification-r12 [1] SEQUENCE {
physCellId-r12 [0] PhysCellId,
dl-CarrierFreq-r12 [1] ARFCN-ValueEUTRA-r9
} OPTIONAL, -- Cond SCellAdd
measResultCellToAdd-r12 [2] SEQUENCE {
rsrpResult-r12 [0] RSRP-Range,
rsrqResult-r12 [1] RSRQ-Range
} OPTIONAL,
...,
[[
sCellIndex-r13 [3] SCellIndex-r13 OPTIONAL,
measResultCellToAdd-v1310 [4] SEQUENCE {
rs-sinr-Result-r13 [0] RS-SINR-Range-r13
} OPTIONAL
]]
}
SCellToAddModListSCG-r12 ::= SEQUENCE (SIZE (1..maxSCell-r10)) OF Cell-ToAddMod-r12
MeasResultServCellListSCG-Ext-r13 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF
MeasResultServCellSCG-r12
SCellToAddModListSCG-Ext-r13 ::= SEQUENCE (SIZE (1..maxSCell-r13)) OF Cell-ToAddMod-r12
MeasResultRSSI-SCG-r13 ::= SEQUENCE {
servCellId-r13 [0] ServCellIndex-r13,
measResultForRSSI-r13 [1] MeasResultForRSSI-r13
}
MeasResultListRSSI-SCG-r13 ::= SEQUENCE (SIZE (1..maxServCell-r13)) OF MeasResultRSSI-SCG-r13
DRB-InfoListSCG-r15 ::= SEQUENCE (SIZE (1..maxDRB-r15)) OF DRB-InfoSCG-r12
SCG-ConfigInfo-v1530-IEs ::= SEQUENCE {
drb-ToAddModListSCG-r15 [0] DRB-InfoListSCG-r15 OPTIONAL,
drb-ToReleaseListSCG-r15 [1] DRB-ToReleaseList-r15 OPTIONAL,
nonCriticalExtension [2] SEQUENCE {
} OPTIONAL
}
SCG-ConfigInfo-v1430-IEs ::= SEQUENCE {
makeBeforeBreakSCG-Req-r14 [0] ENUMERATED { true(0) } OPTIONAL,
measGapConfigPerCC-List [1] EXPLICIT MeasGapConfigPerCC-List-r14 OPTIONAL,
nonCriticalExtension [2] SCG-ConfigInfo-v1530-IEs OPTIONAL
}
SCG-ConfigInfo-v1330-IEs ::= SEQUENCE {
measResultListRSSI-SCG-r13 [0] MeasResultListRSSI-SCG-r13 OPTIONAL,
nonCriticalExtension [1] SCG-ConfigInfo-v1430-IEs OPTIONAL
}
SCG-ConfigInfo-v1310-IEs ::= SEQUENCE {
measResultSSTD-r13 [0] MeasResultSSTD-r13 OPTIONAL,
sCellToAddModListMCG-Ext-r13 [1] SCellToAddModListExt-r13 OPTIONAL,
measResultServCellListSCG-Ext-r13 [2] MeasResultServCellListSCG-Ext-r13
OPTIONAL,
sCellToAddModListSCG-Ext-r13 [3] SCellToAddModListSCG-Ext-r13 OPTIONAL,
sCellToReleaseListSCG-Ext-r13 [4] SCellToReleaseListExt-r13 OPTIONAL,
nonCriticalExtension [5] SCG-ConfigInfo-v1330-IEs OPTIONAL
}
SCG-ConfigInfo-r12-IEs ::= SEQUENCE {
radioResourceConfigDedMCG-r12 [0] RadioResourceConfigDedicated OPTIONAL,
sCellToAddModListMCG-r12 [1] SCellToAddModList-r10 OPTIONAL,
measGapConfig-r12 [2] EXPLICIT MeasGapConfig OPTIONAL,
powerCoordinationInfo-r12 [3] PowerCoordinationInfo-r12 OPTIONAL,
scg-RadioConfig-r12 [4] SCG-ConfigPartSCG-r12 OPTIONAL,
eutra-CapabilityInfo-r12 [5] OCTET STRING (CONTAINING
UECapabilityInformation) OPTIONAL,
scg-ConfigRestrictInfo-r12 [6] SCG-ConfigRestrictInfo-r12 OPTIONAL,
mbmsInterestIndication-r12 [7] OCTET STRING (CONTAINING
MBMSInterestIndication-r11) OPTIONAL,
measResultServCellListSCG-r12 [8] MeasResultServCellListSCG-r12 OPTIONAL,
drb-ToAddModListSCG-r12 [9] DRB-InfoListSCG-r12 OPTIONAL,
drb-ToReleaseListSCG-r12 [10] DRB-ToReleaseList OPTIONAL,
sCellToAddModListSCG-r12 [11] SCellToAddModListSCG-r12 OPTIONAL,
sCellToReleaseListSCG-r12 [12] SCellToReleaseList-r10 OPTIONAL,
p-Max-r12 [13] P-Max OPTIONAL,
nonCriticalExtension [14] SCG-ConfigInfo-v1310-IEs OPTIONAL
}
SCG-ConfigInfo-r12 ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
scg-ConfigInfo-r12 [0] SCG-ConfigInfo-r12-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
UEPagingCoverageInformation-r13-IEs ::= SEQUENCE {
mpdcch-NumRepetition-r13 [0] INTEGER (1..256) OPTIONAL,
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
UEPagingCoverageInformation ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
uePagingCoverageInformation-r13 [0]
UEPagingCoverageInformation-r13-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
UERadioAccessCapabilityInformation-r8-IEs ::= SEQUENCE {
ue-RadioAccessCapabilityInfo [0] OCTET STRING (CONTAINING
UECapabilityInformation),
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
UERadioAccessCapabilityInformation ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
ueRadioAccessCapabilityInformation-r8 [0]
UERadioAccessCapabilityInformation-r8-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
UERadioPagingInformation-v1610-IEs ::= SEQUENCE {
accessStratumRelease-r16 [0] ENUMERATED { true(0) } OPTIONAL,
nonCriticalExtension [1] SEQUENCE {
} OPTIONAL
}
UERadioPagingInformation-v1310-IEs ::= SEQUENCE {
supportedBandListEUTRAForPaging-r13 [0] SEQUENCE (SIZE (1..maxBands)) OF
FreqBandIndicator-r11 OPTIONAL,
nonCriticalExtension [1] UERadioPagingInformation-v1610-IEs OPTIONAL
}
UERadioPagingInformation-r12-IEs ::= SEQUENCE {
ue-RadioPagingInfo-r12 [0] OCTET STRING (CONTAINING UE-RadioPagingInfo-r12),
nonCriticalExtension [1] UERadioPagingInformation-v1310-IEs OPTIONAL
}
UERadioPagingInformation ::= SEQUENCE {
criticalExtensions [0] EXPLICIT CHOICE {
c1 [0] EXPLICIT CHOICE {
ueRadioPagingInformation-r12 [0] UERadioPagingInformation-r12-IEs,
spare7 [1] NULL,
spare6 [2] NULL,
spare5 [3] NULL,
spare4 [4] NULL,
spare3 [5] NULL,
spare2 [6] NULL,
spare1 [7] NULL
},
criticalExtensionsFuture [1] SEQUENCE {
}
}
}
-- Value assignments
maxReestabInfo INTEGER ::= 32
END
File diff suppressed because it is too large Load Diff
+274
View File
@@ -0,0 +1,274 @@
-- This file was generated by the Objective Systems ASN1C Compiler
-- (http://www.obj-sys.com). Version: 7.7.2, Date: 13-Oct-2023.
EUTRA-Sidelink-Preconf DEFINITIONS AUTOMATIC TAGS ::= BEGIN
IMPORTS
AdditionalSpectrumEmission, AdditionalSpectrumEmission-v10l0,
ARFCN-ValueEUTRA-r9, FilterCoefficient, maxCBR-Level-r14, maxCBR-Level-1-r14
, maxFreq, maxFreqV2X-r14, maxSL-TxPool-r12, maxSL-CommRxPoolPreconf-v1310,
maxSL-CommTxPoolPreconf-v1310, maxSL-DiscRxPoolPreconf-r13,
maxSL-DiscTxPoolPreconf-r13, maxSL-V2X-CBRConfig2-r14,
maxSL-V2X-CBRConfig2-1-r14, maxSL-V2X-RxPoolPreconf-r14,
maxSL-V2X-TxConfig2-r14, maxSL-V2X-TxConfig2-1-r14,
maxSL-V2X-TxPoolPreconf-r14, MCS-PSSCH-Range-r15, P-Max,
ReselectionInfoRelay-r13, SL-AnchorCarrierFreqList-V2X-r14,
SL-CBR-Levels-Config-r14, SL-CBR-PSSCH-TxConfig-r14,
SL-CommTxPoolSensingConfig-r14, SL-CP-Len-r12, SL-HoppingConfigComm-r12,
SL-NR-AnchorCarrierFreqList-r16, SL-OffsetIndicator-r12,
SL-OffsetIndicatorSync-r12, SL-OffsetIndicatorSync-v1430, SL-PeriodComm-r12
, RSRP-RangeSL3-r12, SL-MinT2ValueList-r15, SL-PriorityList-r13,
SL-TF-ResourceConfig-r12, SL-TRPT-Subset-r12, SL-TxParameters-r12,
SL-ZoneConfig-r14, P0-SL-r12, TDD-ConfigSL-r12, SubframeBitmapSL-r14,
SL-P2X-ResourceSelectionConfig-r14,
SL-RestrictResourceReservationPeriodList-r14, SL-SyncAllowed-r14,
SL-OffsetIndicatorSync-r14, SL-Priority-r13,
SL-V2X-FreqSelectionConfigList-r15, SL-V2X-PacketDuplicationConfig-r15,
SL-V2X-SyncFreqList-r15
FROM EUTRA-RRC-Definitions ;
-- Productions
Tx-PreconfigIndex-r14 ::= INTEGER (0..maxSL-V2X-TxConfig2-1-r14)
SL-V2X-TxProfile-r15 ::= ENUMERATED { rel14(0), rel15(1), spare6(2), spare5(3)
, spare4(4), spare3(5), spare2(6), spare1(7), ... }
SL-PreconfigGeneral-r12 ::= SEQUENCE {
--PDCP configuration
rohc-Profiles-r12 [0] SEQUENCE {
profile0x0001-r12 [0] BOOLEAN,
profile0x0002-r12 [1] BOOLEAN,
profile0x0004-r12 [2] BOOLEAN,
profile0x0006-r12 [3] BOOLEAN,
profile0x0101-r12 [4] BOOLEAN,
profile0x0102-r12 [5] BOOLEAN,
profile0x0104-r12 [6] BOOLEAN
},
--Physical configuration
carrierFreq-r12 [1] ARFCN-ValueEUTRA-r9,
maxTxPower-r12 [2] P-Max,
additionalSpectrumEmission-r12 [3] AdditionalSpectrumEmission,
sl-bandwidth-r12 [4] ENUMERATED { n6(0), n15(1), n25(2), n50(3), n75(4),
n100(5) },
tdd-ConfigSL-r12 [5] TDD-ConfigSL-r12,
reserved-r12 [6] BIT STRING (SIZE (19)),
...,
[[
additionalSpectrumEmission-v1440 [7] AdditionalSpectrumEmission-v10l0
OPTIONAL
]]
}
SL-PreconfigSync-r12 ::= SEQUENCE {
syncCP-Len-r12 [0] SL-CP-Len-r12,
syncOffsetIndicator1-r12 [1] SL-OffsetIndicatorSync-r12,
syncOffsetIndicator2-r12 [2] SL-OffsetIndicatorSync-r12,
syncTxParameters-r12 [3] P0-SL-r12,
syncTxThreshOoC-r12 [4] RSRP-RangeSL3-r12,
filterCoefficient-r12 [5] FilterCoefficient,
syncRefMinHyst-r12 [6] ENUMERATED { dB0(0), dB3(1), dB6(2), dB9(3), dB12(4)
},
syncRefDiffHyst-r12 [7] ENUMERATED { dB0(0), dB3(1), dB6(2), dB9(3), dB12(4)
, dBinf(5) },
...,
[[
syncTxPeriodic-r13 [8] ENUMERATED { true(0) } OPTIONAL
]]
}
SL-PreconfigCommPool-r12 ::= SEQUENCE {
--This IE is same as SL-CommResourcePool with rxParametersNCell absent
sc-CP-Len-r12 [0] SL-CP-Len-r12,
sc-Period-r12 [1] SL-PeriodComm-r12,
sc-TF-ResourceConfig-r12 [2] SL-TF-ResourceConfig-r12,
sc-TxParameters-r12 [3] P0-SL-r12,
data-CP-Len-r12 [4] SL-CP-Len-r12,
data-TF-ResourceConfig-r12 [5] SL-TF-ResourceConfig-r12,
dataHoppingConfig-r12 [6] SL-HoppingConfigComm-r12,
dataTxParameters-r12 [7] P0-SL-r12,
trpt-Subset-r12 [8] SL-TRPT-Subset-r12,
...,
[[
priorityList-r13 [9] SL-PriorityList-r13 OPTIONAL
]]
}
SL-PreconfigCommPoolList4-r12 ::= SEQUENCE (SIZE (1..maxSL-TxPool-r12)) OF
SL-PreconfigCommPool-r12
SL-PreconfigCommRxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-CommRxPoolPreconf-v1310)) OF
SL-PreconfigCommPool-r12
SL-PreconfigCommTxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-CommTxPoolPreconf-v1310)) OF
SL-PreconfigCommPool-r12
SL-PreconfigDiscPool-r13 ::= SEQUENCE {
--This IE is same as SL-DiscResourcePool with rxParameters absent
cp-Len-r13 [0] SL-CP-Len-r12,
discPeriod-r13 [1] ENUMERATED { rf4(0), rf6(1), rf7(2), rf8(3), rf12(4),
rf14(5), rf16(6), rf24(7), rf28(8), rf32(9), rf64(10), rf128(11),
rf256(12), rf512(13), rf1024(14), spare(15) },
numRetx-r13 [2] INTEGER (0..3),
numRepetition-r13 [3] INTEGER (1..50),
tf-ResourceConfig-r13 [4] SL-TF-ResourceConfig-r12,
txParameters-r13 [5] SEQUENCE {
txParametersGeneral-r13 [0] P0-SL-r12,
txProbability-r13 [1] ENUMERATED { p25(0), p50(1), p75(2), p100(3) }
} OPTIONAL,
...
}
SL-PreconfigDiscRxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-DiscRxPoolPreconf-r13)) OF
SL-PreconfigDiscPool-r13
SL-PreconfigDiscTxPoolList-r13 ::= SEQUENCE (SIZE (1..maxSL-DiscTxPoolPreconf-r13)) OF
SL-PreconfigDiscPool-r13
SL-PreconfigRelay-r13 ::= SEQUENCE {
reselectionInfoOoC-r13 [0] ReselectionInfoRelay-r13
}
SL-Preconfiguration-r12 ::= SEQUENCE {
preconfigGeneral-r12 [0] SL-PreconfigGeneral-r12,
preconfigSync-r12 [1] SL-PreconfigSync-r12,
preconfigComm-r12 [2] SL-PreconfigCommPoolList4-r12,
...,
[[
preconfigComm-v1310 [3] SEQUENCE {
commRxPoolList-r13 [0] SL-PreconfigCommRxPoolList-r13,
commTxPoolList-r13 [1] SL-PreconfigCommTxPoolList-r13 OPTIONAL
} OPTIONAL,
preconfigDisc-r13 [4] SEQUENCE {
discRxPoolList-r13 [0] SL-PreconfigDiscRxPoolList-r13,
discTxPoolList-r13 [1] SL-PreconfigDiscTxPoolList-r13 OPTIONAL
} OPTIONAL,
preconfigRelay-r13 [5] SL-PreconfigRelay-r13 OPTIONAL
]]
}
SL-V2X-SyncOffsetIndicators-r14 ::= SEQUENCE {
syncOffsetIndicator1-r14 [0] SL-OffsetIndicatorSync-r14,
syncOffsetIndicator2-r14 [1] SL-OffsetIndicatorSync-r14,
syncOffsetIndicator3-r14 [2] SL-OffsetIndicatorSync-r14 OPTIONAL
}
SL-PreconfigV2X-Sync-r14 ::= SEQUENCE {
syncOffsetIndicators-r14 [0] SL-V2X-SyncOffsetIndicators-r14,
syncTxParameters-r14 [1] P0-SL-r12,
syncTxThreshOoC-r14 [2] RSRP-RangeSL3-r12,
filterCoefficient-r14 [3] FilterCoefficient,
syncRefMinHyst-r14 [4] ENUMERATED { dB0(0), dB3(1), dB6(2), dB9(3), dB12(4)
},
syncRefDiffHyst-r14 [5] ENUMERATED { dB0(0), dB3(1), dB6(2), dB9(3), dB12(4)
, dBinf(5) },
...,
[[
slss-TxDisabled-r15 [6] ENUMERATED { true(0) } OPTIONAL
]]
}
SL-PPPP-TxPreconfigIndex-r14 ::= SEQUENCE {
priorityThreshold-r14 [0] SL-Priority-r13,
defaultTxConfigIndex-r14 [1] INTEGER (0..maxCBR-Level-1-r14),
cbr-ConfigIndex-r14 [2] INTEGER (0..maxSL-V2X-CBRConfig2-1-r14),
tx-ConfigIndexList-r14 [3] SEQUENCE (SIZE (1..maxCBR-Level-r14)) OF Tx-PreconfigIndex-r14
}
SL-CBR-PPPP-TxPreconfigList-r14 ::= SEQUENCE (SIZE (1..8)) OF
SL-PPPP-TxPreconfigIndex-r14
SL-PPPP-TxPreconfigIndex-v1530 ::= SEQUENCE {
mcs-PSSCH-Range-r15 [0] SEQUENCE (SIZE (1..maxCBR-Level-r14)) OF MCS-PSSCH-Range-r15 OPTIONAL
}
SL-CBR-PPPP-TxPreconfigList-v1530 ::= SEQUENCE (SIZE (1..8)) OF
SL-PPPP-TxPreconfigIndex-v1530
SL-V2X-PreconfigCommPool-r14 ::= SEQUENCE {
--This IE is same as SL-CommResourcePoolV2X with rxParametersNCell absent
sl-OffsetIndicator-r14 [0] EXPLICIT SL-OffsetIndicator-r12 OPTIONAL,
sl-Subframe-r14 [1] EXPLICIT SubframeBitmapSL-r14,
adjacencyPSCCH-PSSCH-r14 [2] BOOLEAN,
sizeSubchannel-r14 [3] ENUMERATED { n4(0), n5(1), n6(2), n8(3), n9(4),
n10(5), n12(6), n15(7), n16(8), n18(9), n20(10), n25(11), n30(12),
n48(13), n50(14), n72(15), n75(16), n96(17), n100(18), spare13(19),
spare12(20), spare11(21), spare10(22), spare9(23), spare8(24), spare7(25)
, spare6(26), spare5(27), spare4(28), spare3(29), spare2(30), spare1(31)
},
numSubchannel-r14 [4] ENUMERATED { n1(0), n3(1), n5(2), n8(3), n10(4),
n15(5), n20(6), spare1(7) },
startRB-Subchannel-r14 [5] INTEGER (0..99),
startRB-PSCCH-Pool-r14 [6] INTEGER (0..99) OPTIONAL,
dataTxParameters-r14 [7] P0-SL-r12,
zoneID-r14 [8] INTEGER (0..7) OPTIONAL,
threshS-RSSI-CBR-r14 [9] INTEGER (0..45) OPTIONAL,
cbr-pssch-TxConfigList-r14 [10] SL-CBR-PPPP-TxPreconfigList-r14 OPTIONAL,
resourceSelectionConfigP2X-r14 [11] SL-P2X-ResourceSelectionConfig-r14
OPTIONAL,
syncAllowed-r14 [12] SL-SyncAllowed-r14 OPTIONAL,
restrictResourceReservationPeriod-r14 [13]
SL-RestrictResourceReservationPeriodList-r14 OPTIONAL,
...,
[[
sl-MinT2ValueList-r15 [14] SL-MinT2ValueList-r15 OPTIONAL,
cbr-pssch-TxConfigList-v1530 [15] SL-CBR-PPPP-TxPreconfigList-v1530
OPTIONAL
]]
}
SL-PreconfigV2X-RxPoolList-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-RxPoolPreconf-r14)) OF
SL-V2X-PreconfigCommPool-r14
SL-PreconfigV2X-TxPoolList-r14 ::= SEQUENCE (SIZE (1..maxSL-V2X-TxPoolPreconf-r14)) OF
SL-V2X-PreconfigCommPool-r14
SL-V2X-PreconfigFreqInfo-r14 ::= SEQUENCE {
v2x-CommPreconfigGeneral-r14 [0] SL-PreconfigGeneral-r12,
v2x-CommPreconfigSync-r14 [1] SL-PreconfigV2X-Sync-r14 OPTIONAL,
v2x-CommRxPoolList-r14 [2] SL-PreconfigV2X-RxPoolList-r14,
v2x-CommTxPoolList-r14 [3] SL-PreconfigV2X-TxPoolList-r14,
p2x-CommTxPoolList-r14 [4] SL-PreconfigV2X-TxPoolList-r14,
v2x-ResourceSelectionConfig-r14 [5] SL-CommTxPoolSensingConfig-r14 OPTIONAL,
zoneConfig-r14 [6] SL-ZoneConfig-r14 OPTIONAL,
syncPriority-r14 [7] ENUMERATED { gnss(0), enb(1) },
thresSL-TxPrioritization-r14 [8] SL-Priority-r13 OPTIONAL,
offsetDFN-r14 [9] INTEGER (0..1000) OPTIONAL,
...,
[[
v2x-FreqSelectionConfigList-r15 [10] SL-V2X-FreqSelectionConfigList-r15
OPTIONAL
]]
}
SL-V2X-PreconfigFreqList-r14 ::= SEQUENCE (SIZE (1..maxFreqV2X-r14)) OF
SL-V2X-PreconfigFreqInfo-r14
SL-CBR-PreconfigTxConfigList-r14 ::= SEQUENCE {
cbr-RangeCommonConfigList-r14 [0] SEQUENCE (SIZE (1..maxSL-V2X-CBRConfig2-r14)) OF
SL-CBR-Levels-Config-r14,
sl-CBR-PSSCH-TxConfigList-r14 [1] SEQUENCE (SIZE (1..maxSL-V2X-TxConfig2-r14)) OF
SL-CBR-PSSCH-TxConfig-r14
}
SL-V2X-TxProfileList-r15 ::= SEQUENCE (SIZE (1..256)) OF SL-V2X-TxProfile-r15
SL-V2X-Preconfiguration-r14 ::= SEQUENCE {
v2x-PreconfigFreqList-r14 [0] SL-V2X-PreconfigFreqList-r14,
anchorCarrierFreqList-r14 [1] SL-AnchorCarrierFreqList-V2X-r14 OPTIONAL,
cbr-PreconfigList-r14 [2] SL-CBR-PreconfigTxConfigList-r14 OPTIONAL,
...,
[[
v2x-PacketDuplicationConfig-r15 [3] SL-V2X-PacketDuplicationConfig-r15
OPTIONAL,
syncFreqList-r15 [4] SL-V2X-SyncFreqList-r15 OPTIONAL,
slss-TxMultiFreq-r15 [5] ENUMERATED { true(0) } OPTIONAL,
v2x-TxProfileList-r15 [6] SL-V2X-TxProfileList-r15 OPTIONAL
]],
[[
anchorCarrierFreqListNR-r16 [7] SL-NR-AnchorCarrierFreqList-r16 OPTIONAL
]]
}
END
+240
View File
@@ -0,0 +1,240 @@
-- This file was generated by the Objective Systems ASN1C Compiler
-- (http://www.obj-sys.com). Version: 7.7.2, Date: 13-Oct-2023.
EUTRA-UE-Variables DEFINITIONS AUTOMATIC TAGS ::= BEGIN
IMPORTS
AbsoluteTimeInfo-r10, AreaConfiguration-r10, AreaConfiguration-v1130,
ARFCN-ValueNR-r15, BT-NameList-r15, CarrierFreqGERAN, CellIdentity,
CellList-r15, CondReconfigurationToAddModList-r16, ConnEstFailReport-r11,
EUTRA-CarrierList-r15, SpeedStateScaleFactors, C-RNTI,
LoggedEventTriggerConfig-r17, LoggingDuration-r10, LoggingInterval-r10,
LogMeasInfo-r10, MeasCSI-RS-Id-r12, MeasId, MeasId-v1250, MeasIdToAddModList
, MeasIdToAddModListExt-r12, MeasIdToAddModList-v1310,
MeasIdToAddModListExt-v1310, MeasObjectToAddModList,
MeasObjectToAddModList-v9e0, MeasObjectToAddModListExt-r13,
MeasResultListExtIdle-r16, MeasResultListIdle-r15, MeasResultListIdleNR-r16
, MeasScaleFactor-r12, MobilityStateParameters, NeighCellConfig,
NR-CarrierList-r16, PhysCellId, PhysCellIdCDMA2000, PhysCellIdGERAN,
PhysCellIdUTRA-FDD, PhysCellIdUTRA-TDD, PLMN-Identity,
PLMN-IdentityList3-r11, QuantityConfig, ReportConfigToAddModList,
RLF-Report-r9, TargetMBSFN-AreaList-r12, TraceReference-r10,
Tx-ResourcePoolMeasList-r14, VisitedCellInfoList-r12, maxCellMeas,
maxCSI-RS-Meas-r12, maxMeasId, maxMeasId-r12, maxRS-Index-r15,
PhysCellIdNR-r15, RS-IndexNR-r15, UL-DelayConfig-r13, ValidityAreaList-r16,
WLAN-CarrierInfo-r13, WLAN-Identifiers-r12, WLAN-Id-List-r13,
WLAN-NameList-r15, WLAN-Status-r13, WLAN-Status-v1430,
WLAN-SuspendConfig-r14
FROM EUTRA-RRC-Definitions ;
-- Productions
VarMobilityHistoryReport-r12 ::= VisitedCellInfoList-r12
VarConditionalReconfiguration ::= SEQUENCE {
-- Conditional reconfigurations list
condReconfigurationList-r16 [0] CondReconfigurationToAddModList-r16 OPTIONAL
}
VarConnEstFailReport-r11 ::= SEQUENCE {
connEstFailReport-r11 [0] ConnEstFailReport-r11,
plmn-Identity-r11 [1] PLMN-Identity
}
VarLogMeasConfig-r10 ::= SEQUENCE {
areaConfiguration-r10 [0] EXPLICIT AreaConfiguration-r10 OPTIONAL,
loggingDuration-r10 [1] LoggingDuration-r10,
loggingInterval-r10 [2] LoggingInterval-r10
}
VarLogMeasConfig-r11 ::= SEQUENCE {
areaConfiguration-r10 [0] EXPLICIT AreaConfiguration-r10 OPTIONAL,
areaConfiguration-v1130 [1] AreaConfiguration-v1130 OPTIONAL,
loggingDuration-r10 [2] LoggingDuration-r10,
loggingInterval-r10 [3] LoggingInterval-r10
}
VarLogMeasConfig-r12 ::= SEQUENCE {
areaConfiguration-r10 [0] EXPLICIT AreaConfiguration-r10 OPTIONAL,
areaConfiguration-v1130 [1] AreaConfiguration-v1130 OPTIONAL,
loggingDuration-r10 [2] LoggingDuration-r10,
loggingInterval-r10 [3] LoggingInterval-r10,
targetMBSFN-AreaList-r12 [4] TargetMBSFN-AreaList-r12 OPTIONAL
}
VarLogMeasConfig-r15 ::= SEQUENCE {
areaConfiguration-r10 [0] EXPLICIT AreaConfiguration-r10 OPTIONAL,
areaConfiguration-v1130 [1] AreaConfiguration-v1130 OPTIONAL,
loggingDuration-r10 [2] LoggingDuration-r10,
loggingInterval-r10 [3] LoggingInterval-r10,
targetMBSFN-AreaList-r12 [4] TargetMBSFN-AreaList-r12 OPTIONAL,
bt-NameList-r15 [5] BT-NameList-r15 OPTIONAL,
wlan-NameList-r15 [6] WLAN-NameList-r15 OPTIONAL
}
VarLogMeasConfig-r17 ::= SEQUENCE {
areaConfiguration-r10 [0] EXPLICIT AreaConfiguration-r10 OPTIONAL,
areaConfiguration-v1130 [1] AreaConfiguration-v1130 OPTIONAL,
loggingDuration-r10 [2] LoggingDuration-r10,
loggingInterval-r10 [3] LoggingInterval-r10,
targetMBSFN-AreaList-r12 [4] TargetMBSFN-AreaList-r12 OPTIONAL,
bt-NameList-r15 [5] BT-NameList-r15 OPTIONAL,
wlan-NameList-r15 [6] WLAN-NameList-r15 OPTIONAL,
loggedEventTriggerConfig-r17 [7] LoggedEventTriggerConfig-r17 OPTIONAL,
measUncomBarPre-r17 [8] ENUMERATED { true(0) } OPTIONAL
}
LogMeasInfoList2-r10 ::= SEQUENCE (SIZE (1..maxLogMeas-r10)) OF LogMeasInfo-r10
VarLogMeasReport-r10 ::= SEQUENCE {
traceReference-r10 [0] TraceReference-r10,
traceRecordingSessionRef-r10 [1] OCTET STRING (SIZE (2)),
tce-Id-r10 [2] OCTET STRING (SIZE (1)),
plmn-Identity-r10 [3] PLMN-Identity,
absoluteTimeInfo-r10 [4] AbsoluteTimeInfo-r10,
logMeasInfoList-r10 [5] LogMeasInfoList2-r10
}
VarLogMeasReport-r11 ::= SEQUENCE {
traceReference-r10 [0] TraceReference-r10,
traceRecordingSessionRef-r10 [1] OCTET STRING (SIZE (2)),
tce-Id-r10 [2] OCTET STRING (SIZE (1)),
plmn-IdentityList-r11 [3] PLMN-IdentityList3-r11,
absoluteTimeInfo-r10 [4] AbsoluteTimeInfo-r10,
logMeasInfoList-r10 [5] LogMeasInfoList2-r10
}
VarMeasConfig ::= SEQUENCE {
--Measurement identities
measIdList [0] MeasIdToAddModList OPTIONAL,
measIdListExt-r12 [1] MeasIdToAddModListExt-r12 OPTIONAL,
measIdList-v1310 [2] MeasIdToAddModList-v1310 OPTIONAL,
measIdListExt-v1310 [3] MeasIdToAddModListExt-v1310 OPTIONAL,
--Measurement objects
measObjectList [4] MeasObjectToAddModList OPTIONAL,
measObjectListExt-r13 [5] MeasObjectToAddModListExt-r13 OPTIONAL,
measObjectList-v9i0 [6] MeasObjectToAddModList-v9e0 OPTIONAL,
--Reporting configurations
reportConfigList [7] ReportConfigToAddModList OPTIONAL,
--Other parameters
quantityConfig [8] QuantityConfig OPTIONAL,
measScaleFactor-r12 [9] MeasScaleFactor-r12 OPTIONAL,
s-Measure [10] INTEGER (-140..-44) OPTIONAL,
speedStatePars [11] EXPLICIT CHOICE {
release [0] NULL,
setup [1] SEQUENCE {
mobilityStateParameters [0] MobilityStateParameters,
timeToTrigger-SF [1] SpeedStateScaleFactors
}
} OPTIONAL,
allowInterruptions-r11 [12] BOOLEAN OPTIONAL
}
VarMeasIdleConfig-r15 ::= SEQUENCE {
measIdleCarrierListEUTRA-r15 [0] EUTRA-CarrierList-r15 OPTIONAL,
measIdleDuration-r15 [1] ENUMERATED { sec10(0), sec30(1), sec60(2),
sec120(3), sec180(4), sec240(5), sec300(6) }
}
VarMeasIdleConfig-r16 ::= SEQUENCE {
measIdleCarrierListNR-r16 [0] NR-CarrierList-r16 OPTIONAL,
validityAreaList-r16 [1] ValidityAreaList-r16 OPTIONAL
}
VarMeasIdleReport-r15 ::= SEQUENCE {
measReportIdle-r15 [0] MeasResultListIdle-r15
}
VarMeasIdleReport-r16 ::= SEQUENCE {
measReportIdle-r16 [0] MeasResultListExtIdle-r16 OPTIONAL,
measReportIdleNR-r16 [1] MeasResultListIdleNR-r16 OPTIONAL
}
SSB-IndexList-r15 ::= SEQUENCE (SIZE (1..maxRS-Index-r15)) OF RS-IndexNR-r15
CellsTriggeredList ::= SEQUENCE (SIZE (1..maxCellMeas)) OF CHOICE {
physCellIdEUTRA [0] PhysCellId,
physCellIdUTRA [1] EXPLICIT CHOICE {
fdd [0] PhysCellIdUTRA-FDD,
tdd [1] PhysCellIdUTRA-TDD
},
physCellIdGERAN [2] SEQUENCE {
carrierFreq [0] CarrierFreqGERAN,
physCellId [1] PhysCellIdGERAN
},
physCellIdCDMA2000 [3] PhysCellIdCDMA2000,
wlan-Identifiers-r13 [4] WLAN-Identifiers-r12,
physCellIdNR-r15 [5] SEQUENCE {
carrierFreq [0] ARFCN-ValueNR-r15,
physCellId [1] PhysCellIdNR-r15,
rs-IndexList-r15 [2] SSB-IndexList-r15 OPTIONAL
}
}
CSI-RS-TriggeredList-r12 ::= SEQUENCE (SIZE (1..maxCSI-RS-Meas-r12)) OF MeasCSI-RS-Id-r12
VarMeasReport ::= SEQUENCE {
--List of measurement that have been triggered
measId [0] MeasId,
measId-v1250 [1] MeasId-v1250 OPTIONAL,
cellsTriggeredList [2] CellsTriggeredList OPTIONAL,
csi-RS-TriggeredList-r12 [3] CSI-RS-TriggeredList-r12 OPTIONAL,
poolsTriggeredList-r14 [4] Tx-ResourcePoolMeasList-r14 OPTIONAL,
numberOfReportsSent [5] INTEGER
}
VarMeasReportList ::= SEQUENCE (SIZE (1..maxMeasId)) OF VarMeasReport
VarMeasReportList-r12 ::= SEQUENCE (SIZE (1..maxMeasId-r12)) OF VarMeasReport
VarPendingRnaUpdate-r15 ::= SEQUENCE {
pendingRnaUpdate [0] BOOLEAN OPTIONAL
}
VarRLF-Report-r10 ::= SEQUENCE {
rlf-Report-r10 [0] RLF-Report-r9,
plmn-Identity-r10 [1] PLMN-Identity
}
VarRLF-Report-r11 ::= SEQUENCE {
rlf-Report-r10 [0] RLF-Report-r9,
plmn-IdentityList-r11 [1] PLMN-IdentityList3-r11
}
VarShortINACTIVE-MAC-Input-r15 ::= SEQUENCE {
cellIdentity-r15 [0] CellIdentity,
physCellId-r15 [1] PhysCellId,
c-RNTI-r15 [2] C-RNTI
}
VarShortMAC-Input ::= SEQUENCE {
cellIdentity [0] CellIdentity,
physCellId [1] PhysCellId,
c-RNTI [2] C-RNTI
}
VarShortResumeMAC-Input-r13 ::= SEQUENCE {
cellIdentity-r13 [0] CellIdentity,
physCellId-r13 [1] PhysCellId,
c-RNTI-r13 [2] C-RNTI,
resumeDiscriminator-r13 [3] BIT STRING (SIZE (1))
}
VarWLAN-MobilityConfig ::= SEQUENCE {
wlan-MobilitySet-r13 [0] WLAN-Id-List-r13 OPTIONAL,
successReportRequested [1] ENUMERATED { true(0) } OPTIONAL,
wlan-SuspendConfig-r14 [2] WLAN-SuspendConfig-r14 OPTIONAL
}
VarWLAN-Status-r13 ::= SEQUENCE {
status-r13 [0] WLAN-Status-r13,
status-r14 [1] WLAN-Status-v1430 OPTIONAL
}
-- Value assignments
maxLogMeas-r10 INTEGER ::= 4060
END
+45
View File
@@ -0,0 +1,45 @@
-- This file was generated by the Objective Systems ASN1C Compiler
-- (http://www.obj-sys.com). Version: 7.7.2, Date: 13-Oct-2023.
PC5-RRC-Definitions DEFINITIONS AUTOMATIC TAGS ::= BEGIN
IMPORTS
TDD-ConfigSL-r12
FROM EUTRA-RRC-Definitions ;
-- Productions
MasterInformationBlock-SL ::= SEQUENCE {
sl-Bandwidth-r12 [0] ENUMERATED { n6(0), n15(1), n25(2), n50(3), n75(4),
n100(5) },
tdd-ConfigSL-r12 [1] TDD-ConfigSL-r12,
directFrameNumber-r12 [2] BIT STRING (SIZE (10)),
directSubframeNumber-r12 [3] INTEGER (0..9),
inCoverage-r12 [4] BOOLEAN,
reserved-r12 [5] BIT STRING (SIZE (19))
}
SBCCH-SL-BCH-MessageType ::= MasterInformationBlock-SL
MasterInformationBlock-SL-V2X-r14 ::= SEQUENCE {
sl-Bandwidth-r14 [0] ENUMERATED { n6(0), n15(1), n25(2), n50(3), n75(4),
n100(5) },
tdd-ConfigSL-r14 [1] TDD-ConfigSL-r12,
directFrameNumber-r14 [2] BIT STRING (SIZE (10)),
directSubframeNumber-r14 [3] INTEGER (0..9),
inCoverage-r14 [4] BOOLEAN,
reserved-r14 [5] BIT STRING (SIZE (27))
}
SBCCH-SL-BCH-MessageType-V2X-r14 ::= MasterInformationBlock-SL-V2X-r14
SBCCH-SL-BCH-Message ::= SEQUENCE {
message [0] SBCCH-SL-BCH-MessageType
}
SBCCH-SL-BCH-Message-V2X-r14 ::= SEQUENCE {
message [0] SBCCH-SL-BCH-MessageType-V2X-r14
}
END
+2
View File
@@ -0,0 +1,2 @@
#[allow(unreachable_patterns, non_camel_case_types)]
pub mod lte_rrc;
File diff suppressed because one or more lines are too long
+17
View File
@@ -0,0 +1,17 @@
use telcom_parser::lte_rrc::BCCH_DL_SCH_Message;
use asn1_codecs::{uper::UperCodec, PerCodecData};
fn hex_to_bin(hex: &str) -> Vec<u8> {
(0..hex.len())
.step_by(2)
.map(|i| u8::from_str_radix(&hex[i..i+2], 16).unwrap())
.collect()
}
#[test]
fn test() {
let data = hex_to_bin("484c469010600018fd1a9207e22103108ac21bdc09802292cdd20000");
let mut asn_data = PerCodecData::from_slice_uper(&data);
let sib1 = BCCH_DL_SCH_Message::uper_decode(&mut asn_data);
dbg!(&sib1);
}