aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-12-30 20:18:34 +0100
committerlaforge <laforge@osmocom.org>2019-12-31 17:01:51 +0000
commit461ed61e4d8c3b1b9e21c62d27b7050307d9555d (patch)
tree4aa72ea7b2668e19f1c475a63a853b54fa4ff420
parent86904080a36450e135941443a77c52f0fa38cd46 (diff)
GSM_RR_Types.ttcn: Support encoding of EGPRS Packet Uplink Assignment
-rw-r--r--library/GSM_RR_Types.ttcn124
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,