diff options
Diffstat (limited to 'library/RLCMAC_Types.ttcn')
-rw-r--r-- | library/RLCMAC_Types.ttcn | 74 |
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)" } |