aboutsummaryrefslogtreecommitdiffstats
path: root/library/RLCMAC_Types.ttcn
diff options
context:
space:
mode:
Diffstat (limited to 'library/RLCMAC_Types.ttcn')
-rw-r--r--library/RLCMAC_Types.ttcn74
1 files changed, 25 insertions, 49 deletions
diff --git a/library/RLCMAC_Types.ttcn b/library/RLCMAC_Types.ttcn
index 96b8a647..76aeb22e 100644
--- a/library/RLCMAC_Types.ttcn
+++ b/library/RLCMAC_Types.ttcn
@@ -115,6 +115,11 @@ module RLCMAC_Types {
DlCtrlOptOctets opt optional,
RlcmacDlCtrlMsg payload
} with {
+ /* Automatic padding by RAW encoder seems to causing problems
+ * due to padding sequence 2b inserted shifted from octet
+ * boundary on some messags. See UL CTRL blocks in TC_t3193.
+ * See 3GPP TS 44.060 Figure 11.1 (below)
+ * variant "PADDING(184), PADDING_PATTERN('00101011'B)" */
variant (opt) "PRESENCE(mac_hdr.payload_type = MAC_PT_RLCMAC_OPT)"
};
@@ -133,7 +138,14 @@ module RLCMAC_Types {
type record RlcmacUlCtrlBlock {
UlMacCtrlHeader mac_hdr,
RlcmacUlCtrlMsg payload
- } with { variant "" };
+ } with {
+ /* Automatic padding by RAW encoder seems to causing problems
+ * due to padding sequence 2b inserted shifted from octet
+ * boundary on some messags. See UL CTRL blocks in TC_t3193.
+ * See 3GPP TS 44.060 Figure 11.1 (below)
+ * variant "PADDING(184), PADDING_PATTERN('00101011'B)" */
+ variant ""
+ };
external function enc_RlcmacUlCtrlBlock(in RlcmacUlCtrlBlock si) return octetstring
with { extension "prototype(convert) encode(RAW)" };
@@ -182,6 +194,7 @@ module RLCMAC_Types {
DlMacHdrDataExt hdr_ext
} with { variant "" };
type record RlcmacDlDataBlock {
+ CodingScheme cs, /* Provided by C++ Decoder */
DlMacDataHeader mac_hdr,
/* Octet 3..M / N: manual C++ Decoder */
LlcBlocks blocks
@@ -222,14 +235,15 @@ module RLCMAC_Types {
MacRrbp rrbp,
BIT2 esp,
uint3_t usf,
- uint14_t bsn1,
+ uint11_t bsn1,
uint8_t bsn2_offset,
uint2_t pr, /* power reduction */
- uint2_t spb,
+ uint2_t spb optional,
uint4_t cps
- } with { variant "" };
+ } with { variant (spb) "PRESENCE(header_type=RLCMAC_HDR_TYPE_3)" };
/* Manual C++ Decoder: */
type record RlcmacDlEgprsDataBlock {
+ CodingScheme mcs, /* Provided by C++ Decoder */
EgprsDlMacDataHeader mac_hdr,
boolean fbi,
boolean e,
@@ -277,15 +291,18 @@ module RLCMAC_Types {
BIT1 foi_si,
BIT1 r_ri,
uint11_t bsn1,
+ uint8_t bsn2_offset,
uint4_t cps,
boolean pfi_ind,
BIT1 rsb,
- BIT2 spb
+ BIT2 spb optional
} with {
variant (pfi_ind) "FIELDLENGTH(1)"
+ variant (spb) "PRESENCE(header_type=RLCMAC_HDR_TYPE_3)"
};
/* Manual C++ Decoder: 10.3a.2.1 EGPRS Uplink RLC data block */
type record RlcmacUlEgprsDataBlock {
+ CodingScheme mcs, /* Provided by C++ Decoder */
EgprsUlMacDataHeader mac_hdr,
boolean tlli_ind,
boolean e,
@@ -300,6 +317,7 @@ module RLCMAC_Types {
/* TS 44.060 10.2.2 */
type record RlcmacUlDataBlock {
+ CodingScheme cs, /* Provided by C++ Decoder */
/* MAC header */
UlMacDataHeader mac_hdr,
/* Octet 3 ... M (optional): manual C++ Decoder */
@@ -354,10 +372,8 @@ module RLCMAC_Types {
external function enc_RlcmacDlBlock(in RlcmacDlBlock si) return octetstring;
external function dec_RlcmacDlBlock(in octetstring stream) return RlcmacDlBlock;
-/************************
- * PTCCH/D (Packet Timing Advance Control Channel) message.
- * TODO: add a spec. reference to the message format definition.
- *************************/
+ /* PTCCH (Packet Timing Advance Control Channel) downlink block format.
+ * See 3GPP TS 44.004, section 7.8. */
type record PTCCHTimingAdvanceIE {
BIT1 spare ('0'B),
uint7_t ta_val
@@ -373,44 +389,4 @@ module RLCMAC_Types {
external function dec_PTCCHDownlinkMsg(in octetstring stream) return PTCCHDownlinkMsg
with { extension "prototype(convert) decode(RAW)" };
- template PTCCHDownlinkMsg tr_PTCCHDownlinkMsg(
- template (present) uint7_t tai0_ta := ?,
- template (present) uint7_t tai1_ta := ?,
- template (present) uint7_t tai2_ta := ?,
- template (present) uint7_t tai3_ta := ?,
- template (present) uint7_t tai4_ta := ?,
- template (present) uint7_t tai5_ta := ?,
- template (present) uint7_t tai6_ta := ?,
- template (present) uint7_t tai7_ta := ?,
- template (present) uint7_t tai8_ta := ?,
- template (present) uint7_t tai9_ta := ?,
- template (present) uint7_t tai10_ta := ?,
- template (present) uint7_t tai11_ta := ?,
- template (present) uint7_t tai12_ta := ?,
- template (present) uint7_t tai13_ta := ?,
- template (present) uint7_t tai14_ta := ?,
- template (present) uint7_t tai15_ta := ?
- ) := {
- ta_idx := {
- { spare := '0'B, ta_val := tai0_ta },
- { spare := '0'B, ta_val := tai1_ta },
- { spare := '0'B, ta_val := tai2_ta },
- { spare := '0'B, ta_val := tai3_ta },
- { spare := '0'B, ta_val := tai4_ta },
- { spare := '0'B, ta_val := tai5_ta },
- { spare := '0'B, ta_val := tai6_ta },
- { spare := '0'B, ta_val := tai7_ta },
- { spare := '0'B, ta_val := tai8_ta },
- { spare := '0'B, ta_val := tai9_ta },
- { spare := '0'B, ta_val := tai10_ta },
- { spare := '0'B, ta_val := tai11_ta },
- { spare := '0'B, ta_val := tai12_ta },
- { spare := '0'B, ta_val := tai13_ta },
- { spare := '0'B, ta_val := tai14_ta },
- { spare := '0'B, ta_val := tai15_ta }
- },
- padding := '2B2B2B2B2B2B2B'O
- }
-
-
} with { encode "RAW"; variant "FIELDORDER(msb)" }