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 Osmocom_Types all;
import from GSM_Types all; import from GSM_Types all;
import from GSM_RR_Types all; import from GSM_RR_Types all;
import from GSM_SystemInformation all;
import from L1CTL_PortType all; import from L1CTL_PortType all;
import from L1CTL_Types all; import from L1CTL_Types all;
import from LAPDm_Types all; import from LAPDm_Types all;
@ -86,8 +87,16 @@ type record ConnHdlrPars {
ConnL1Pars l1_pars 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 */ /* Default SYSTEM INFORMATION 3 */
template (value) GsmRrMessage ts_SI3_default := { template (value) SystemInformation ts_SI3_default := {
header := t_RrHeader(SYSTEM_INFORMATION_TYPE_3, 0), header := t_RrHeader(SYSTEM_INFORMATION_TYPE_3, 0),
payload := { payload := {
si3 := { si3 := {
@ -101,32 +110,26 @@ template (value) GsmRrMessage ts_SI3_default := {
att := true, att := true,
bs_ag_blks_res := 1, bs_ag_blks_res := 1,
ccch_conf := CCHAN_DESC_1CCCH_COMBINED, ccch_conf := CCHAN_DESC_1CCCH_COMBINED,
si22_ind := false, si22ind := false,
cbq3 := CBQ3_IU_MODE_NOT_SUPPORTED, cbq3 := CBQ3_IU_MODE_NOT_SUPPORTED,
spare := '00'B, spare := '00'B,
bs_pa_mfrms := 0, /* 2 multiframes */ bs_pa_mfrms := 0, /* 2 multiframes */
t3212 := 1 /* 6 minutes */ t3212 := 1 /* 6 minutes */
}, },
cell_opts := { cell_options := {
dn_ind := false, dn_ind := false,
pwrc := false, pwrc := false,
dtx := MS_MAY_USE_UL_DTX, dtx := MS_MAY_USE_UL_DTX,
radio_link_tout_div4 := 4/4 radio_link_tout_div4 := 4/4
}, },
cell_sel_pars := { cell_sel_par := {
cell_resel_hyst_2dB := 0, cell_resel_hyst_2dB := 0,
ms_txpwr_max_cch := 0, ms_txpwr_max_cch := 0,
acs := '0'B, acs := '0'B,
neci := true, neci := true,
rxlev_access_min := 0 rxlev_access_min := 0
}, },
rach_ctrl_pars := { rach_control := ts_RachCtrl_default,
max_retrans := RACH_MAX_RETRANS_1,
tx_integer := '0000'B, /* 3 slots */
cell_bar_access := false,
re_not_allowed := true,
acc := '1111111111111111'B
},
rest_octets := ''O 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 */ f_sleep(0.5); /* workaround for OS#3000 */
/* Send SI3 to the BTS, it is needed for various computations */ /* 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); 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))); 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 gen_links $DIR $FILES
DIR=../library 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+="NS_Emulation.ttcn NS_CodecPort.ttcn NS_CodecPort_CtrlFunct.ttcn NS_CodecPort_CtrlFunctDef.cc "
#FILES+="BSSGP_Emulation.ttcn Osmocom_Gb_Types.ttcn " #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 " 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 uint3_t non_drx_timer
} with { variant "" }; } 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 */ /* 24.008 10.5.5.15 */
type record RoutingAreaIdentification { type record RoutingAreaIdentification {
LocationAreaIdentification lai, LocationAreaIdentification lai,
@ -639,30 +577,19 @@ module GSM_RR_Types {
RestOctets rest_octets RestOctets rest_octets
} with { variant "" }; } 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 { type union RrUnion {
/* /*
SystemInformationType1 si1, SystemInformationType1 si1,
SystemInformationType2 si2, SystemInformationType2 si2,
SystemInformationType2bis si2bis, SystemInformationType2bis si2bis,
SystemInformationType2ter si2ter, SystemInformationType2ter si2ter,
SystemInformationType3 si3,
SystemInformationType4 si4, SystemInformationType4 si4,
SystemInformationType5 si5, SystemInformationType5 si5,
SystemInformationType5bis si5bis, SystemInformationType5bis si5bis,
SystemInformationType5ter si5ter, SystemInformationType5ter si5ter,
SystemInformationType6 si6, SystemInformationType6 si6,
*/ */
SystemInformationType3 si3,
ImmediateAssignment imm_ass, ImmediateAssignment imm_ass,
ImmediateAssignmentReject imm_ass_rej, ImmediateAssignmentReject imm_ass_rej,
PagingRequestType1 pag_req_1, PagingRequestType1 pag_req_1,

View File

@ -22,11 +22,16 @@ module GSM_SystemInformation {
type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" }; type octetstring CellChannelDescription with { variant "FIELDLENGTH(16)" };
/* 44.018 10.5.2.3 */ /* 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 { type record CellOptions {
boolean dn_ind, boolean dn_ind,
boolean pwrc, boolean pwrc,
BIT2 dtx, CellOptions_DTX dtx,
BIT4 radio_link_timeout uint4_t radio_link_tout_div4
} with { variant "" }; } with { variant "" };
/* 44.018 10.5.2.3a */ /* 44.018 10.5.2.3a */
@ -39,23 +44,35 @@ module GSM_SystemInformation {
/* 44.018 10.5.2.4 */ /* 44.018 10.5.2.4 */
type record CellSelectionParameters { type record CellSelectionParameters {
uint3_t cell_resel_hyst, uint3_t cell_resel_hyst_2dB,
uint5_t ms_txpwr_max_cch, uint5_t ms_txpwr_max_cch,
boolean acs, BIT1 acs,
boolean neci, boolean neci,
uint6_t rxlev_access_min uint6_t rxlev_access_min
} with { variant "" }; } with { variant "" };
/* 44.018 10.5.2.11 */ /* 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 { type record ControlChannelDescription {
boolean mscrr, boolean msc_r99,
boolean att, boolean att,
uint3_t bs_ag_blks_res, uint3_t bs_ag_blks_res,
uint3_t ccch_conf, CtrlChanDesc_CC ccch_conf,
boolean si22ind, boolean si22ind,
uint2_t cbq3, CBQ3 cbq3,
BIT2 spare, BIT2 spare,
uint3_t bs_pa_mfrms, uint3_t bs_pa_mfrms, /* off by 2 */
uint8_t t3212 uint8_t t3212
} with { variant "" }; } with { variant "" };
@ -77,13 +94,19 @@ module GSM_SystemInformation {
type bitstring AccessControlClass with { variant "FIELDLENGTH(16), BYTEORDER(last)" }; type bitstring AccessControlClass with { variant "FIELDLENGTH(16), BYTEORDER(last)" };
/* 44.018 10.5.2.29 */ /* 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 { type record RachControlParameters {
BIT2 max_retrans, RachCtrlPar_MR max_retrans,
BIT4 tx_integer, BIT4 tx_integer,
boolean cell_barr_access, boolean cell_barr_access,
boolean re, boolean re_not_allowed,
AccessControlClass ac AccessControlClass acc
} with { variant (ac) "FIELDLENGTH(16)" }; } with { variant (acc) "FIELDLENGTH(16)" };
/* 44.018 10.5.2.32 */ /* 44.018 10.5.2.32 */
type RestOctets Si1RestOctets with { variant "FIELDLENGTH(1)" }; type RestOctets Si1RestOctets with { variant "FIELDLENGTH(1)" };

View File

@ -751,8 +751,12 @@ module Test {
testcase TC_rach_max_tx() runs on dummy_CT { testcase TC_rach_max_tx() runs on dummy_CT {
var uint16_t r := float2int(rnd() * 3.0); var uint16_t r := float2int(rnd() * 3.0);
const integer max_tx_map[4] := { 1, 2, 4, 7 }; 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; 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_init();
f_vty_enter_cfg_bts(BSCVTY, 0); f_vty_enter_cfg_bts(BSCVTY, 0);
@ -764,9 +768,12 @@ module Test {
} }
testcase TC_dtx_ul() runs on dummy_CT { 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; 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_init();
f_vty_enter_cfg_bts(BSCVTY, 0); f_vty_enter_cfg_bts(BSCVTY, 0);
@ -826,7 +833,7 @@ module Test {
testcase TC_radio_link_timeout() runs on dummy_CT { testcase TC_radio_link_timeout() runs on dummy_CT {
var integer i := float2int(rnd() * 15.0); var integer i := float2int(rnd() * 15.0);
var template SystemInformation t := t_SI_SI3; 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_init();
f_vty_enter_cfg_bts(BSCVTY, 0); f_vty_enter_cfg_bts(BSCVTY, 0);
@ -840,7 +847,7 @@ module Test {
testcase TC_cell_resel_hyst() runs on dummy_CT { testcase TC_cell_resel_hyst() runs on dummy_CT {
var integer i := float2int(rnd() * 7.0); var integer i := float2int(rnd() * 7.0);
var template SystemInformation t := t_SI_SI3; 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_init();
f_vty_enter_cfg_bts(BSCVTY, 0); f_vty_enter_cfg_bts(BSCVTY, 0);
@ -883,9 +890,9 @@ module Test {
var integer i := float2int(rnd()); var integer i := float2int(rnd());
var template SystemInformation t := t_SI_SI3; var template SystemInformation t := t_SI_SI3;
if (i == 1) { if (i == 1) {
t.payload.si3.rach_control.ac := '?????0??????????'B; t.payload.si3.rach_control.acc := '?????0??????????'B;
} else { } else {
t.payload.si3.rach_control.ac := '?????1??????????'B; t.payload.si3.rach_control.acc := '?????1??????????'B;
} }
f_init(); f_init();