Merge duplicate SI3 in GSM_RR_Types and GSM_SystemInformation

Let's have one SI3 definition rather than multiple...

Change-Id: I3c4754c9a69cb2fa51d88ef6358d5399dbb29860
This commit is contained in:
Harald Welte 2018-02-25 16:17:33 +01:00
parent 3ae11dade5
commit 82ccef7c18
5 changed files with 67 additions and 107 deletions

View File

@ -6,6 +6,7 @@ import from GSM_RR_Types all;
import from Osmocom_Types all;
import from GSM_Types all;
import from GSM_RR_Types all;
import from GSM_SystemInformation all;
import from L1CTL_PortType all;
import from L1CTL_Types all;
import from LAPDm_Types all;
@ -86,8 +87,16 @@ type record ConnHdlrPars {
ConnL1Pars l1_pars
}
template (value) RachControlParameters ts_RachCtrl_default := {
max_retrans := RACH_MAX_RETRANS_1,
tx_integer := '0000'B, /* 3 slots */
cell_barr_access := false,
re_not_allowed := true,
acc := '1111111111111111'B
};
/* Default SYSTEM INFORMATION 3 */
template (value) GsmRrMessage ts_SI3_default := {
template (value) SystemInformation ts_SI3_default := {
header := t_RrHeader(SYSTEM_INFORMATION_TYPE_3, 0),
payload := {
si3 := {
@ -101,32 +110,26 @@ template (value) GsmRrMessage ts_SI3_default := {
att := true,
bs_ag_blks_res := 1,
ccch_conf := CCHAN_DESC_1CCCH_COMBINED,
si22_ind := false,
si22ind := false,
cbq3 := CBQ3_IU_MODE_NOT_SUPPORTED,
spare := '00'B,
bs_pa_mfrms := 0, /* 2 multiframes */
t3212 := 1 /* 6 minutes */
},
cell_opts := {
cell_options := {
dn_ind := false,
pwrc := false,
dtx := MS_MAY_USE_UL_DTX,
radio_link_tout_div4 := 4/4
},
cell_sel_pars := {
cell_sel_par := {
cell_resel_hyst_2dB := 0,
ms_txpwr_max_cch := 0,
acs := '0'B,
neci := true,
rxlev_access_min := 0
},
rach_ctrl_pars := {
max_retrans := RACH_MAX_RETRANS_1,
tx_integer := '0000'B, /* 3 slots */
cell_bar_access := false,
re_not_allowed := true,
acc := '1111111111111111'B
},
rach_control := ts_RachCtrl_default,
rest_octets := ''O
}
}
@ -139,9 +142,9 @@ function f_init(charstring id := "BTS-Test") runs on test_CT {
f_sleep(0.5); /* workaround for OS#3000 */
/* Send SI3 to the BTS, it is needed for various computations */
var GsmRrMessage si3 := valueof(ts_SI3_default);
var SystemInformation si3 := valueof(ts_SI3_default);
log("Sending SI3 ", si3);
var octetstring si3_enc := enc_GsmRrMessage(si3);
var octetstring si3_enc := enc_SystemInformation(si3);
RSL_CCHAN.send(ts_RSL_UD(ts_RSL_BCCH_INFO(RSL_SYSTEM_INFO_3, si3_enc)));
}

View File

@ -36,7 +36,7 @@ FILES="MobileL3_CC_Types.ttcn MobileL3_CommonIE_Types.ttcn MobileL3_GMM_SM_Types
gen_links $DIR $FILES
DIR=../library
FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "
FILES="General_Types.ttcn GSM_Types.ttcn GSM_RR_Types.ttcn GSM_SystemInformation.ttcn Osmocom_Types.ttcn RLCMAC_Types.ttcn RLCMAC_CSN1_Types.ttcn RLCMAC_EncDec.cc L1CTL_Types.ttcn L1CTL_PortType.ttcn LAPDm_RAW_PT.ttcn LAPDm_Types.ttcn "
#FILES+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "
#FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn "
FILES+="IPA_Types.ttcn IPA_CodecPort.ttcn IPA_CodecPort_CtrlFunct.ttcn IPA_CodecPort_CtrlFunctDef.cc IPA_Emulation.ttcnpp IPA_CodecPort.ttcn RSL_Types.ttcn RSL_Emulation.ttcn "

View File

@ -366,68 +366,6 @@ module GSM_RR_Types {
uint3_t non_drx_timer
} with { variant "" };
/* 44.018 10.5.2.3 */
type enumerated CellOptions_DTX {
MS_MAY_USE_UL_DTX ('00'B),
MS_SHALL_USE_UL_DTX ('01'B),
MS_SHALL_NOT_USE_UL_DTX ('10'B)
} with { variant "FIELDLENGTH(2)" };
type record CellOptions {
boolean dn_ind,
boolean pwrc,
CellOptions_DTX dtx,
uint4_t radio_link_tout_div4
} with { variant "" };
/* 44.018 10.5.2.4 */
type record CellSelectionPars {
uint3_t cell_resel_hyst_2dB,
uint5_t ms_txpwr_max_cch,
BIT1 acs,
boolean neci,
uint6_t rxlev_access_min
} with { variant "" };
/* 44.018 10.5.2.29 */
type enumerated RachCtrlPar_MR {
RACH_MAX_RETRANS_1 ('00'B),
RACH_MAX_RETRANS_2 ('01'B),
RACH_MAX_RETRANS_4 ('10'B),
RACH_MAX_RETRANS_7 ('11'B)
} with { variant "FIELDLENGTH(2)" };
type record RachControlPars {
RachCtrlPar_MR max_retrans,
BIT4 tx_integer,
boolean cell_bar_access,
boolean re_not_allowed,
BIT16 acc
} with { variant "" };
/* 44.018 10.5.2.11 */
type enumerated CtrlChanDesc_CC {
CCHAN_DESC_1CCCH_NOT_COMBINED ('000'B),
CCHAN_DESC_1CCCH_COMBINED ('001'B),
CCHAN_DESC_2CCCH_NOT_COMBINED ('010'B),
CCHAN_DESC_3CCCH_NOT_COMBINED ('100'B),
CCHAN_DESC_4CCCH_NOT_COMBINED ('110'B)
} with { variant "FIELDLENGTH(3)" };
type enumerated CBQ3 {
CBQ3_IU_MODE_NOT_SUPPORTED ('00'B),
CBQ3_IU_MODE_MS_BARRED ('01'B),
CBQ3_IU_MODE_NOT_BARRED ('10'B)
} with { variant "FIELDLENGTH(2)" };
type record CtrlChanDesc {
boolean msc_r99,
boolean att,
uint3_t bs_ag_blks_res,
CtrlChanDesc_CC ccch_conf,
boolean si22_ind,
CBQ3 cbq3,
BIT2 spare,
uint3_t bs_pa_mfrms, /* off by 2 */
uint8_t t3212
} with { variant "" };
/* 24.008 10.5.5.15 */
type record RoutingAreaIdentification {
LocationAreaIdentification lai,
@ -639,30 +577,19 @@ module GSM_RR_Types {
RestOctets rest_octets
} with { variant "" };
/* 9.1.35 */
type record SystemInformationType3 {
CellIdentity cell_id,
LocationAreaIdentification lai,
CtrlChanDesc ctrl_chan_desc,
CellOptions cell_opts,
CellSelectionPars cell_sel_pars,
RachControlPars rach_ctrl_pars,
RestOctets rest_octets
} with { variant (rest_octets) "FIELDLENGTH(4)" };
type union RrUnion {
/*
SystemInformationType1 si1,
SystemInformationType2 si2,
SystemInformationType2bis si2bis,
SystemInformationType2ter si2ter,
SystemInformationType3 si3,
SystemInformationType4 si4,
SystemInformationType5 si5,
SystemInformationType5bis si5bis,
SystemInformationType5ter si5ter,
SystemInformationType6 si6,
*/
SystemInformationType3 si3,
ImmediateAssignment imm_ass,
ImmediateAssignmentReject imm_ass_rej,
PagingRequestType1 pag_req_1,

View File

@ -22,11 +22,16 @@ module GSM_SystemInformation {
type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" };
/* 44.018 10.5.2.3 */
type enumerated CellOptions_DTX {
MS_MAY_USE_UL_DTX ('00'B),
MS_SHALL_USE_UL_DTX ('01'B),
MS_SHALL_NOT_USE_UL_DTX ('10'B)
} with { variant "FIELDLENGTH(2)" };
type record CellOptions {
boolean dn_ind,
boolean pwrc,
BIT2 dtx,
BIT4 radio_link_timeout
CellOptions_DTX dtx,
uint4_t radio_link_tout_div4
} with { variant "" };
/* 44.018 10.5.2.3a */
@ -39,23 +44,35 @@ module GSM_SystemInformation {
/* 44.018 10.5.2.4 */
type record CellSelectionParameters {
uint3_t cell_resel_hyst,
uint3_t cell_resel_hyst_2dB,
uint5_t ms_txpwr_max_cch,
boolean acs,
BIT1 acs,
boolean neci,
uint6_t rxlev_access_min
} with { variant "" };
/* 44.018 10.5.2.11 */
type enumerated CtrlChanDesc_CC {
CCHAN_DESC_1CCCH_NOT_COMBINED ('000'B),
CCHAN_DESC_1CCCH_COMBINED ('001'B),
CCHAN_DESC_2CCCH_NOT_COMBINED ('010'B),
CCHAN_DESC_3CCCH_NOT_COMBINED ('100'B),
CCHAN_DESC_4CCCH_NOT_COMBINED ('110'B)
} with { variant "FIELDLENGTH(3)" };
type enumerated CBQ3 {
CBQ3_IU_MODE_NOT_SUPPORTED ('00'B),
CBQ3_IU_MODE_MS_BARRED ('01'B),
CBQ3_IU_MODE_NOT_BARRED ('10'B)
} with { variant "FIELDLENGTH(2)" };
type record ControlChannelDescription {
boolean mscrr,
boolean msc_r99,
boolean att,
uint3_t bs_ag_blks_res,
uint3_t ccch_conf,
CtrlChanDesc_CC ccch_conf,
boolean si22ind,
uint2_t cbq3,
CBQ3 cbq3,
BIT2 spare,
uint3_t bs_pa_mfrms,
uint3_t bs_pa_mfrms, /* off by 2 */
uint8_t t3212
} with { variant "" };
@ -77,13 +94,19 @@ module GSM_SystemInformation {
type bitstring AccessControlClass with { variant "FIELDLENGTH(16), BYTEORDER(last)" };
/* 44.018 10.5.2.29 */
type enumerated RachCtrlPar_MR {
RACH_MAX_RETRANS_1 ('00'B),
RACH_MAX_RETRANS_2 ('01'B),
RACH_MAX_RETRANS_4 ('10'B),
RACH_MAX_RETRANS_7 ('11'B)
} with { variant "FIELDLENGTH(2)" };
type record RachControlParameters {
BIT2 max_retrans,
RachCtrlPar_MR max_retrans,
BIT4 tx_integer,
boolean cell_barr_access,
boolean re,
AccessControlClass ac
} with { variant (ac) "FIELDLENGTH(16)" };
boolean re_not_allowed,
AccessControlClass acc
} with { variant (acc) "FIELDLENGTH(16)" };
/* 44.018 10.5.2.32 */
type RestOctets Si1RestOctets with { variant "FIELDLENGTH(1)" };

View File

@ -751,8 +751,12 @@ module Test {
testcase TC_rach_max_tx() runs on dummy_CT {
var uint16_t r := float2int(rnd() * 3.0);
const integer max_tx_map[4] := { 1, 2, 4, 7 };
const RachCtrlPar_MR max_tx_map2[4] := { RACH_MAX_RETRANS_1,
RACH_MAX_RETRANS_2,
RACH_MAX_RETRANS_4,
RACH_MAX_RETRANS_7 };
var template SystemInformation t := t_SI_SI3;
t.payload.si3.rach_control.max_retrans := int2bit(r, 2);
t.payload.si3.rach_control.max_retrans := max_tx_map2[r];
f_init();
f_vty_enter_cfg_bts(BSCVTY, 0);
@ -764,9 +768,12 @@ module Test {
}
testcase TC_dtx_ul() runs on dummy_CT {
var integer i := float2int(rnd() * 2.0);
var integer i := float2int(rnd() * 3.0);
var template SystemInformation t := t_SI_SI3;
t.payload.si3.cell_options.dtx := int2bit(i, 2);
var CellOptions_DTX dtx_map[3] := { MS_MAY_USE_UL_DTX,
MS_SHALL_USE_UL_DTX,
MS_SHALL_NOT_USE_UL_DTX };
t.payload.si3.cell_options.dtx := dtx_map[i];
f_init();
f_vty_enter_cfg_bts(BSCVTY, 0);
@ -826,7 +833,7 @@ module Test {
testcase TC_radio_link_timeout() runs on dummy_CT {
var integer i := float2int(rnd() * 15.0);
var template SystemInformation t := t_SI_SI3;
t.payload.si3.cell_options.radio_link_timeout := int2bit(i, 4);
t.payload.si3.cell_options.radio_link_tout_div4 := i;
f_init();
f_vty_enter_cfg_bts(BSCVTY, 0);
@ -840,7 +847,7 @@ module Test {
testcase TC_cell_resel_hyst() runs on dummy_CT {
var integer i := float2int(rnd() * 7.0);
var template SystemInformation t := t_SI_SI3;
t.payload.si3.cell_sel_par.cell_resel_hyst := i;
t.payload.si3.cell_sel_par.cell_resel_hyst_2dB := i;
f_init();
f_vty_enter_cfg_bts(BSCVTY, 0);
@ -883,9 +890,9 @@ module Test {
var integer i := float2int(rnd());
var template SystemInformation t := t_SI_SI3;
if (i == 1) {
t.payload.si3.rach_control.ac := '?????0??????????'B;
t.payload.si3.rach_control.acc := '?????0??????????'B;
} else {
t.payload.si3.rach_control.ac := '?????1??????????'B;
t.payload.si3.rach_control.acc := '?????1??????????'B;
}
f_init();