diff --git a/bsc/BSC_Tests.ttcn b/bsc/BSC_Tests.ttcn index 0c71581df..5276ed9c8 100644 --- a/bsc/BSC_Tests.ttcn +++ b/bsc/BSC_Tests.ttcn @@ -7374,7 +7374,7 @@ testcase TC_dyn_pdch_osmo_act_deact() runs on test_CT { log("TCH/F_TCH/H_PDCH pchan starts out in disabled mode:"); f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); f_sleep(1.0); @@ -7403,7 +7403,7 @@ testcase TC_dyn_pdch_osmo_act_nack() runs on test_CT { f_ts_dyn_mode_assert(0, 0, chan_nr.tn, NONE_MODE); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); /* NACK this activation and expect the "show timeslot" mode still to be NONE */ f_ipa_tx(0, ts_RSL_CHAN_ACT_NACK(chan_nr, RSL_ERR_EQUIPMENT_FAIL)); @@ -7435,7 +7435,7 @@ testcase TC_dyn_ts_sdcch8_act_deact() runs on test_CT { log("TCH/F_TCH/H_SDCCH8_PDCH pchan starts out in disabled mode:"); f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, NONE_MODE); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); f_sleep(1.0); @@ -7473,7 +7473,7 @@ testcase TC_dyn_ts_sdcch8_act_deact() runs on test_CT { f_exp_chan_rel_and_clear(dt, 0); /* The BSC will switch the TS back to PDCH once the only lchan using it is released: */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); f_sleep(1.0); f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, PDCH_MODE); @@ -7505,7 +7505,7 @@ testcase TC_dyn_ts_sdcch8_all_subslots_used() runs on test_CT { /* The dyn TS want to activate PDCH mode, ACK that. */ var RslChannelNr chan_nr; chan_nr := valueof(t_RslChanNr_PDCH(2)); - f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); f_sleep(1.0); @@ -7559,7 +7559,7 @@ testcase TC_dyn_ts_sdcch8_tch_call_act_deact() runs on test_CT { log("TCH/F_TCH/H_SDCCH8_PDCH pchan starts out in disabled mode:"); f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, NONE_MODE); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); f_sleep(1.0); @@ -7597,7 +7597,7 @@ testcase TC_dyn_ts_sdcch8_tch_call_act_deact() runs on test_CT { f_exp_chan_rel_and_clear(dt, 0); /* The BSC will switch the TS back to PDCH once the only lchan using it is released: */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); f_sleep(1.0); f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, PDCH_MODE); @@ -7629,7 +7629,7 @@ testcase TC_dyn_ts_sdcch8_act_nack() runs on test_CT { log("TCH/F_TCH/H_SDCCH8_PDCH pchan starts out in disabled mode:"); f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, NONE_MODE); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); f_sleep(1.0); @@ -7662,7 +7662,7 @@ testcase TC_dyn_ts_sdcch8_act_nack() runs on test_CT { /* FIXME? Currently the TS stays in state BORKEN: */ /* The BSC will switch the TS back to PDCH once the only lchan using it is released: */ - /* rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr, ?)); + /* rsl_unused := f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(pdch_chan_nr)); * f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(pdch_chan_nr, 2342)); * f_sleep(1.0); * f_ts_dyn_mode_assert(0, 0, pdch_chan_nr.tn, PDCH_MODE) @@ -10319,7 +10319,7 @@ testcase TC_imm_ass_pre_chan_ack_dyn_ts() runs on test_CT { var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2323)); /* clean up timeslot 6 config, will only take effect when the OML drops the next time */ @@ -10391,7 +10391,7 @@ testcase TC_imm_ass_pre_ts_ack_dyn_ts() runs on test_CT { var RslChannelNr chan_nr := valueof(t_RslChanNr_PDCH(6)); /* The BSC will activate the dynamic PDCH by default, so confirm that */ - f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2323)); /* clean up timeslot 6 config, will only take effect when the OML drops the next time */ @@ -10723,7 +10723,7 @@ testcase TC_ratectr_all_available_allocated_dyn() runs on test_CT { /* The dyn TS wants to activate PDCH mode, ACK that. */ var RslChannelNr chan_nr; chan_nr := valueof(t_RslChanNr_PDCH(2)); - f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); /* Exhaust all dedicated SDCCH lchans. @@ -10781,7 +10781,7 @@ testcase TC_ratectr_all_available_allocated_dyn() runs on test_CT { /* All SDCCH on the dyn TS are released, the dyn TS wants to activate PDCH again */ chan_nr := valueof(t_RslChanNr_PDCH(2)); - f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr, ?)); + f_exp_ipa_rx(0, tr_RSL_CHAN_ACT_PDCH(chan_nr)); f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, 2342)); /* Now all channels are occupied except the dyn TS, so expecting only the static counters to increment */ diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn index 70fb39868..ccd43e607 100644 --- a/library/RSL_Types.ttcn +++ b/library/RSL_Types.ttcn @@ -318,7 +318,7 @@ module RSL_Types { } /* osmocom-style dynamic PDCH */ - const RSL_IE_ActivationType t_RSL_IE_ActType_PDCH := { + const RSL_IE_ActivationType c_RSL_IE_ActType_PDCH := { reactivation := false, reserved := 1, a_bits := ACT_REL_TO_OSMO_PDCH @@ -1400,13 +1400,23 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie * } } - template RSL_Message tr_RSL_CHAN_ACT_PDCH(template RslChannelNr chan_nr, - template RSL_IE_ChannelMode mode) := { + + template (value) RSL_Message + ts_RSL_CHAN_ACT_PDCH(template (value) RslChannelNr chan_nr) := { + msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), + msg_type := RSL_MT_CHAN_ACTIV, + ies :={ + t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}), + t_RSL_IE(RSL_IE_ACT_TYPE, RSL_IE_Body:{act_type := c_RSL_IE_ActType_PDCH}) + } + } + template RSL_Message + tr_RSL_CHAN_ACT_PDCH(template (present) RslChannelNr chan_nr) := { msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_CHAN_ACTIV, ies :={ tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}), - tr_RSL_IE(RSL_IE_Body:{act_type := t_RSL_IE_ActType_PDCH}), + tr_RSL_IE(RSL_IE_Body:{act_type := c_RSL_IE_ActType_PDCH}), /* lots of optional IEs */ * } @@ -2320,14 +2330,16 @@ template RSL_Message tr_RSL_MsgTypeDR(template RSL_MessageType msg_type) modifie } - template (value) RSL_Message ts_RSL_IPA_PDCH_ACT(RslChannelNr chan_nr) := { + template (value) RSL_Message + ts_RSL_IPA_PDCH_ACT(template (value) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := { t_RSL_IE(RSL_IE_CHAN_NR, RSL_IE_Body:{chan_nr := chan_nr}) } } - template RSL_Message tr_RSL_IPA_PDCH_ACT(template RslChannelNr chan_nr) := { + template RSL_Message + tr_RSL_IPA_PDCH_ACT(template (present) RslChannelNr chan_nr) := { msg_disc := ts_RSL_MsgDisc(RSL_MDISC_DCHAN, false), msg_type := RSL_MT_IPAC_PDCH_ACT, ies := {