summaryrefslogtreecommitdiffstats
path: root/library/RLCMAC_Templates.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/RLCMAC_Templates.ttcn')
-rw-r--r--library/RLCMAC_Templates.ttcn40
1 files changed, 40 insertions, 0 deletions
diff --git a/library/RLCMAC_Templates.ttcn b/library/RLCMAC_Templates.ttcn
index be751d7..1774197 100644
--- a/library/RLCMAC_Templates.ttcn
+++ b/library/RLCMAC_Templates.ttcn
@@ -93,6 +93,46 @@ module RLCMAC_Templates {
return CS_1;
}
+ function f_rlcmac_block_ChCodingCommand2cs_mcs(ChCodingCommand chcc) return CodingScheme {
+ select (chcc) {
+ case (CH_CODING_CS1) { return CS_1; }
+ case (CH_CODING_CS2) { return CS_2; }
+ case (CH_CODING_CS3) { return CS_3; }
+ case (CH_CODING_CS4) { return CS_4; }
+ }
+ return CS_1;
+ }
+
+ function f_rlcmac_block_EgprsChCodingCommand2cs_mcs(EgprsChCodingCommand echcc) return CodingScheme {
+ select (echcc) {
+ case (CH_CODING_MCS1) { return MCS_1; }
+ case (CH_CODING_MCS2) { return MCS_2; }
+ case (CH_CODING_MCS3) { return MCS_3; }
+ case (CH_CODING_MCS4) { return MCS_4; }
+ case (CH_CODING_MCS5) { return MCS_5; }
+ case (CH_CODING_MCS6) { return MCS_6; }
+ case (CH_CODING_MCS7) { return MCS_7; }
+ case (CH_CODING_MCS8) { return MCS_8; }
+ case (CH_CODING_MCS9) { return MCS_9; }
+ /* CH_CODING_MCS5_7 */
+ /* CH_CODING_MCS6_9 */
+ }
+ return MCS_1;
+ }
+
+ /* 1 -> CS_1 / MCS_1, 2 -> CS_2 / MCS_2, etc. */
+ function f_rlcmac_block_int2cs_mcs(integer n, boolean is_mcs) return CodingScheme {
+ var CodingScheme cs_mcs;
+ if (not is_mcs) {
+ int2enum(n - 1, cs_mcs);
+ return cs_mcs;
+ } else {
+ cs_mcs := MCS_0;
+ int2enum(enum2int(cs_mcs) + n, cs_mcs);
+ return cs_mcs;
+ }
+ }
+
/* Coding and Puncturing Scheme indicator field for Header type 1 in EGPRS TBF or EC TBF or downlink EGPRS2 TBF */
function f_rlcmac_cps_htype1_to_mcs(uint3_t cps) return CodingScheme {
var CodingSchemeArray egprs_Header_type1_coding_puncturing_scheme_to_mcs := {