diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-12-30 20:18:34 +0100 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2019-12-31 17:01:51 +0000 |
commit | 461ed61e4d8c3b1b9e21c62d27b7050307d9555d (patch) | |
tree | 4aa72ea7b2668e19f1c475a63a853b54fa4ff420 /library | |
parent | 86904080a36450e135941443a77c52f0fa38cd46 (diff) |
GSM_RR_Types.ttcn: Support encoding of EGPRS Packet Uplink Assignment
Change-Id: Idf3bd12318480e8cdd26fce35e52d0a9e8c39608
Diffstat (limited to 'library')
-rw-r--r-- | library/GSM_RR_Types.ttcn | 124 |
1 files changed, 123 insertions, 1 deletions
diff --git a/library/GSM_RR_Types.ttcn b/library/GSM_RR_Types.ttcn index f5eeda5c..9fd7733c 100644 --- a/library/GSM_RR_Types.ttcn +++ b/library/GSM_RR_Types.ttcn @@ -552,7 +552,129 @@ module GSM_RR_Types { type record IaRestOctLL { BIT1 compressed_irat_ho_info_ind } with { variant "" }; - type octetstring EgprsUlAss; /* TODO */ + + + type record of AccessTechnologiesRequest + AccessTechnologiesRequestRepetition + with { variant "EXTENSION_BIT(reverse)" }; + + type record AccessTechnologiesRequest + { + BIT4 accessTechnType, + BIT1 extensionBit + } with { variant "FIELDORDER(msb)" }; + + type enumerated EgprsChCodingCommand { + CH_CODING_MCS1 ('0000'B), + CH_CODING_MCS2 ('0001'B), + CH_CODING_MCS3 ('0010'B), + CH_CODING_MCS4 ('0011'B), + CH_CODING_MCS5 ('0100'B), + CH_CODING_MCS6 ('0101'B), + CH_CODING_MCS7 ('0110'B), + CH_CODING_MCS8 ('0111'B), + CH_CODING_MCS9 ('1000'B), + CH_CODING_MCS5_7 ('1001'B), + CH_CODING_MCS6_9 ('1010'B) + } with { variant "FIELDLENGTH(4)" }; + + /* TS 44.060 Table 12.5.2.1 */ + type enumerated EgprsWindowSize { + EGPRS_WS_64 ('00000'B), + EGPRS_WS_96 ('00001'B), + EGPRS_WS_128 ('00010'B), + EGPRS_WS_160 ('00011'B), + EGPRS_WS_192 ('00100'B), + EGPRS_WS_224 ('00101'B), + EGPRS_WS_256 ('00110'B), + EGPRS_WS_288 ('00111'B), + EGPRS_WS_320 ('01000'B), + EGPRS_WS_352 ('01001'B), + EGPRS_WS_384 ('01010'B), + EGPRS_WS_416 ('01011'B), + EGPRS_WS_448 ('01100'B), + EGPRS_WS_480 ('01101'B), + EGPRS_WS_512 ('01110'B), + EGPRS_WS_544 ('01111'B), + EGPRS_WS_576 ('10000'B), + EGPRS_WS_608 ('10001'B), + EGPRS_WS_640 ('10010'B), + EGPRS_WS_672 ('10011'B), + EGPRS_WS_704 ('10100'B), + EGPRS_WS_736 ('10101'B), + EGPRS_WS_768 ('10110'B), + EGPRS_WS_800 ('10111'B), + EGPRS_WS_832 ('11000'B), + EGPRS_WS_864 ('11001'B), + EGPRS_WS_896 ('11010'B), + EGPRS_WS_928 ('11011'B), + EGPRS_WS_960 ('11100'B), + EGPRS_WS_992 ('11101'B), + EGPRS_WS_1024 ('11110'B) + } with { variant "FIELDLENGTH(5)" }; + + type record EgprsUlAssignDyn { + uint5_t tfi_assignment, + BIT1 polling, + BIT1 spare ('0'B), + uint3_t usf, + BIT1 usf_granularity, + BIT1 p0_present, + uint4_t p0 optional, + BIT1 pr_mode optional, + EgprsChCodingCommand egprs_ch_coding_cmd, + BIT1 tlli_block_chan_coding, + BIT1 bep_period2_present, + BIT4 bep_period2 optional, + BIT1 resegment, + EgprsWindowSize egprs_window_size, + BIT1 alpha_present, + uint4_t alpha optional, + uint5_t gamma, + BIT1 ta_index_present, + uint4_t ta_index optional, + BIT1 tbf_starting_time_present, + uint16_t tbf_starting_time optional + /* TODO: Additions for Rel-7 */ + } with { + variant (p0) "PRESENCE(p0_present = '1'B)" + variant (pr_mode) "PRESENCE(p0_present = '1'B)" + variant (bep_period2) "PRESENCE(bep_period2_present = '1'B)" + variant (alpha) "PRESENCE(alpha_present = '1'B)" + variant (ta_index) "PRESENCE(ta_index_present = '1'B)" + variant (tbf_starting_time) "PRESENCE(tbf_starting_time_present = '1'B)" + }; + type record EgprsUlAssignMultiblock { + BIT1 alpha_present, + uint4_t alpha optional, + uint5_t gamma, + uint16_t tbf_starting_time, + BIT2 nr_radio_blocks_allocated, + BIT1 p0_present, + uint4_t p0 optional, + BIT1 spare ('0'B) optional, + BIT1 pr_mode optional + /* TDO: Additions for Rel-6 */ + } with { + variant (alpha) "PRESENCE(alpha_present = '1'B)" + variant (p0) "PRESENCE(p0_present = '1'B)" + variant (spare) "PRESENCE(p0_present = '1'B)" + variant (pr_mode) "PRESENCE(p0_present = '1'B)" + }; + /* 3GPP TS 44.018 version 13.3.2 10.5.2.16, "EGPRS Packet Uplink Assignment" */ + type record EgprsUlAss { + BIT5 ext_ra, + BIT1 ats_present, + AccessTechnologiesRequestRepetition ats optional, + BIT1 presence, + EgprsUlAssignDyn dynamic optional, + EgprsUlAssignMultiblock multiblock optional + } with { + variant (ats) "PRESENCE(ats_present = '1'B)" + variant (dynamic) "PRESENCE(presence = '1'B)" + variant (multiblock) "PRESENCE(presence = '0'B)" + }; + type octetstring MblkDlAss; /* TODO */ type record IaRestOctLH { BIT2 presence, |