|
|
|
@ -15,6 +15,7 @@ module GSM_RR_Types {
|
|
|
|
|
import from General_Types all;
|
|
|
|
|
import from Osmocom_Types all;
|
|
|
|
|
import from GSM_Types all;
|
|
|
|
|
import from GSM_RestOctets all;
|
|
|
|
|
import from RLCMAC_CSN1_Types all;
|
|
|
|
|
import from MobileL3_CommonIE_Types all;
|
|
|
|
|
import from MobileL3_RRM_Types all;
|
|
|
|
@ -421,224 +422,6 @@ module GSM_RR_Types {
|
|
|
|
|
uint3_t non_drx_timer
|
|
|
|
|
} with { variant "" };
|
|
|
|
|
|
|
|
|
|
/* 44.018 10.5.2.16 */
|
|
|
|
|
type record IaRestOctHL {
|
|
|
|
|
uint6_t freq_par_len,
|
|
|
|
|
BIT2 padding ('00'B) optional,
|
|
|
|
|
uint6_t maio optional,
|
|
|
|
|
octetstring mobile_allocation optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (freq_par_len) "LENGTHTO(mobile_allocation,maio,padding)"
|
|
|
|
|
/*
|
|
|
|
|
variant (padding) "PRESENCE(freq_par_len != 0)"
|
|
|
|
|
variant (maio) "PRESENCE(freq_par_len != 0)"
|
|
|
|
|
variant (mobile_allocation) "PRESENCE(freq_par_len != 0)"
|
|
|
|
|
*/
|
|
|
|
|
};
|
|
|
|
|
type record SecondPartAssign {
|
|
|
|
|
BIT1 r99, /* L / H */
|
|
|
|
|
BIT1 presence optional,
|
|
|
|
|
BIT5 ext_ra optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (r99) "CSN.1 L/H"
|
|
|
|
|
variant (presence) "PRESENCE(r99 = '1'B)" /* H */
|
|
|
|
|
variant (ext_ra) "PRESENCE(presence = '1'B)"
|
|
|
|
|
/* See https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488 */
|
|
|
|
|
variant (ext_ra) "BYTEORDER(last)" // FIXME: should be first
|
|
|
|
|
};
|
|
|
|
|
type union PacketUlDlAssignUnion {
|
|
|
|
|
PacketUlAssign ul,
|
|
|
|
|
PacketDlAssign dl
|
|
|
|
|
};
|
|
|
|
|
type record PacketUlDlAssign {
|
|
|
|
|
BIT1 ass_disc,
|
|
|
|
|
PacketUlDlAssignUnion ass
|
|
|
|
|
} with {
|
|
|
|
|
variant (ass) "CROSSTAG(dl, ass_disc = '1'B; ul, ass_disc = '0'B)"
|
|
|
|
|
};
|
|
|
|
|
type union PacketAssignUnion {
|
|
|
|
|
SecondPartAssign spa,
|
|
|
|
|
PacketUlDlAssign uldl
|
|
|
|
|
};
|
|
|
|
|
type record IaRestOctHH {
|
|
|
|
|
/* Packet Assignment discriminator:
|
|
|
|
|
* Packet Uplink / Downlink Assignment (0)
|
|
|
|
|
* Second Part Packet Assignment (1) */
|
|
|
|
|
BIT1 pa_disc,
|
|
|
|
|
PacketAssignUnion pa
|
|
|
|
|
} with {
|
|
|
|
|
variant (pa) "CROSSTAG(spa, pa_disc = '1'B; uldl, pa_disc = '0'B)"
|
|
|
|
|
};
|
|
|
|
|
type record TbfStartingTime {
|
|
|
|
|
uint5_t t1,
|
|
|
|
|
uint6_t t3,
|
|
|
|
|
uint5_t t2
|
|
|
|
|
};
|
|
|
|
|
type record PacketUlAssignDyn {
|
|
|
|
|
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,
|
|
|
|
|
ChCodingCommand ch_coding_cmd,
|
|
|
|
|
BIT1 tlli_block_chan_coding,
|
|
|
|
|
BIT1 alpha_present,
|
|
|
|
|
uint4_t alpha optional,
|
|
|
|
|
uint5_t gamma,
|
|
|
|
|
BIT1 ta_index_present,
|
|
|
|
|
uint4_t ta_index optional,
|
|
|
|
|
BIT1 tbf_starting_time_present,
|
|
|
|
|
TbfStartingTime tbf_starting_time optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (p0) "PRESENCE(p0_present = '1'B)"
|
|
|
|
|
variant (pr_mode) "PRESENCE(p0_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 PacketUlAssignSgl {
|
|
|
|
|
BIT1 alpha_present,
|
|
|
|
|
uint4_t alpha optional,
|
|
|
|
|
uint5_t gamma,
|
|
|
|
|
BIT2 padding ('01'B),
|
|
|
|
|
TbfStartingTime tbf_starting_time
|
|
|
|
|
/* TODO: P0 / PR_MODE */
|
|
|
|
|
} with {
|
|
|
|
|
variant (alpha) "PRESENCE(alpha_present = '1'B)"
|
|
|
|
|
};
|
|
|
|
|
type record PacketUlAssign {
|
|
|
|
|
BIT1 presence,
|
|
|
|
|
PacketUlAssignDyn dynamic optional,
|
|
|
|
|
PacketUlAssignSgl single optional
|
|
|
|
|
/* TODO: Estended RA, PFI */
|
|
|
|
|
} with {
|
|
|
|
|
variant (dynamic) "PRESENCE(presence = '1'B)"
|
|
|
|
|
variant (single) "PRESENCE(presence = '0'B)"
|
|
|
|
|
};
|
|
|
|
|
type record PacketDlAssG1 {
|
|
|
|
|
uint5_t tfi_assignment,
|
|
|
|
|
BIT1 rlc_mode,
|
|
|
|
|
BIT1 alpha_present,
|
|
|
|
|
uint4_t alpha optional,
|
|
|
|
|
uint5_t gamma,
|
|
|
|
|
BIT1 polling,
|
|
|
|
|
BIT1 ta_valid
|
|
|
|
|
} with { variant "" };
|
|
|
|
|
type record PacketDlAssign {
|
|
|
|
|
GprsTlli tlli,
|
|
|
|
|
BIT1 group1_present,
|
|
|
|
|
PacketDlAssG1 group1 optional,
|
|
|
|
|
BIT1 ta_index_present,
|
|
|
|
|
uint4_t ta_index optional,
|
|
|
|
|
BIT1 tbf_starting_time_present,
|
|
|
|
|
TbfStartingTime tbf_starting_time optional,
|
|
|
|
|
BIT1 p0_present,
|
|
|
|
|
uint4_t p0 optional,
|
|
|
|
|
BIT1 pr_mode optional
|
|
|
|
|
/* TODO: EGPRS window size, etc. */
|
|
|
|
|
} with {
|
|
|
|
|
variant (group1) "PRESENCE(group1_present = '1'B)"
|
|
|
|
|
variant (ta_index) "PRESENCE(ta_index_present = '1'B)"
|
|
|
|
|
variant (tbf_starting_time) "PRESENCE(tbf_starting_time_present = '1'B)"
|
|
|
|
|
variant (p0) "PRESENCE(p0_present = '1'B)"
|
|
|
|
|
variant (pr_mode) "PRESENCE(p0_present = '1'B)"
|
|
|
|
|
};
|
|
|
|
|
type record IaRestOctLL {
|
|
|
|
|
BIT1 compressed_irat_ho_info_ind
|
|
|
|
|
} with {
|
|
|
|
|
variant (compressed_irat_ho_info_ind) "CSN.1 L/H"
|
|
|
|
|
};
|
|
|
|
|
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,
|
|
|
|
|
TbfStartingTime 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,
|
|
|
|
|
TbfStartingTime 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)"
|
|
|
|
|
/* See https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488 */
|
|
|
|
|
variant (ext_ra) "BYTEORDER(last)" // FIXME: should be first
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type octetstring MblkDlAss; /* TODO */
|
|
|
|
|
type record IaRestOctLH {
|
|
|
|
|
BIT2 presence,
|
|
|
|
|
EgprsUlAss egprs_ul optional,
|
|
|
|
|
MblkDlAss multiblock_dl_ass optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (egprs_ul) "PRESENCE(presence = '00'B)"
|
|
|
|
|
variant (multiblock_dl_ass) "PRESENCE(presence = '01'B)"
|
|
|
|
|
};
|
|
|
|
|
type record IaRestOctets {
|
|
|
|
|
BIT2 presence,
|
|
|
|
|
IaRestOctLL ll optional,
|
|
|
|
|
IaRestOctLH lh optional,
|
|
|
|
|
IaRestOctHL hl optional,
|
|
|
|
|
IaRestOctHH hh optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (presence) "CSN.1 L/H"
|
|
|
|
|
variant (ll) "PRESENCE(presence = '00'B)"
|
|
|
|
|
variant (lh) "PRESENCE(presence = '01'B)"
|
|
|
|
|
variant (hl) "PRESENCE(presence = '10'B)"
|
|
|
|
|
variant (hh) "PRESENCE(presence = '11'B)"
|
|
|
|
|
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type record MeasurementResults {
|
|
|
|
|
BIT1 ba_used,
|
|
|
|
|
BIT1 dtx_used,
|
|
|
|
@ -744,34 +527,6 @@ module GSM_RR_Types {
|
|
|
|
|
IARRestOctets rest_octets
|
|
|
|
|
} with { variant "" };
|
|
|
|
|
|
|
|
|
|
/* 10.5.2.17 IAR (Immediate Assignment Reject) Rest Octets */
|
|
|
|
|
type record IARRestOctets {
|
|
|
|
|
ExtRAList ext_ra_list,
|
|
|
|
|
BIT1 rel13_ind, // L/H
|
|
|
|
|
uint3_t rcc optional
|
|
|
|
|
/* Addition in Rel-15: PEO IMM Cell Group Details struct */
|
|
|
|
|
} with {
|
|
|
|
|
variant (rel13_ind) "CSN.1 L/H"
|
|
|
|
|
variant (rcc) "PRESENCE(rel13_ind = '1'B)"
|
|
|
|
|
|
|
|
|
|
/* The TITAN's RAW encoder generates an octet-aligned octetstring,
|
|
|
|
|
* so we should make sure that unused bits contain proper padding. */
|
|
|
|
|
variant "PADDING(yes), PADDING_PATTERN('00101011'B)"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Optional extended RA: 0 | 1 < Extended RA 1 : bit (5) > */
|
|
|
|
|
type record ExtRAOpt {
|
|
|
|
|
BIT1 presence, // L/H
|
|
|
|
|
BIT5 ext_ra optional
|
|
|
|
|
} with {
|
|
|
|
|
variant (presence) "CSN.1 L/H"
|
|
|
|
|
variant (ext_ra) "PRESENCE(presence = '1'B)"
|
|
|
|
|
/* See https://bugs.eclipse.org/bugs/show_bug.cgi?id=562488 */
|
|
|
|
|
variant (ext_ra) "BYTEORDER(last)"
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
type record length(4) of ExtRAOpt ExtRAList;
|
|
|
|
|
|
|
|
|
|
/* 9.1.21 */
|
|
|
|
|
type record MeasurementReport {
|
|
|
|
|
MeasurementResults meas_res
|
|
|
|
|