bsc: add TC_imm_ass_pre_chan_ack_dyn_ts
Related: SYS#5559 Change-Id: Ic5a3b930c57a5c61514137986eb4f8f8c1f2a1ba
This commit is contained in:
parent
b07b295bb0
commit
7a6d0607b2
|
@ -9704,6 +9704,72 @@ testcase TC_imm_ass_pre_chan_ack() runs on test_CT {
|
|||
f_shutdown_helper();
|
||||
}
|
||||
|
||||
testcase TC_imm_ass_pre_chan_ack_dyn_ts() runs on test_CT {
|
||||
/* change Timeslot 6 before f_init() starts RSL */
|
||||
f_init_vty();
|
||||
f_ts_set_chcomb(0, 0, 6, "TCH/F_TCH/H_PDCH");
|
||||
f_vty_transceive(BSCVTY, "drop bts connection 0 oml");
|
||||
|
||||
f_init(1, false);
|
||||
f_sleep(1.0);
|
||||
|
||||
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_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 */
|
||||
f_ts_set_chcomb(0, 0, 6, "PDCH");
|
||||
|
||||
/* block all static timeslots so that the dyn TS will be used */
|
||||
f_disable_all_tch_f();
|
||||
f_disable_all_tch_h();
|
||||
f_disable_all_sdcch();
|
||||
|
||||
var RSL_Message chan_act;
|
||||
var RSL_Message imm_ass;
|
||||
|
||||
f_init(1, false);
|
||||
f_sleep(1.0);
|
||||
|
||||
f_vty_set_imm_ass(BSCVTY, 0, "pre-chan-ack");
|
||||
|
||||
/* RA containing reason=LU */
|
||||
var GsmFrameNumber fn := 2342;
|
||||
var uint8_t ra := 2;
|
||||
f_ipa_tx(0, ts_RSL_CHAN_RQD(int2oct(ra, 1), fn));
|
||||
|
||||
/* (set bts 0 cfg back to default) */
|
||||
f_vty_set_imm_ass(BSCVTY);
|
||||
|
||||
/* Expect the dyn TS to deactivate PDCH first */
|
||||
f_exp_ipa_rx(0, tr_RSL_RF_CHAN_REL(chan_nr));
|
||||
f_ipa_tx(0, ts_RSL_RF_CHAN_REL_ACK(chan_nr));
|
||||
|
||||
/* Now activation as SDCCH8 */
|
||||
chan_nr := valueof(t_RslChanNr_SDCCH8(tn := 6, sub_slot := 0));
|
||||
|
||||
chan_act := f_exp_ipa_rx(0, tr_RSL_MsgTypeD(RSL_MT_CHAN_ACTIV));
|
||||
|
||||
/* *FIRST* expect the Immediate Assignment, before we ACK the chan act */
|
||||
imm_ass := f_exp_ipa_rx(0, tr_RSL_IMM_ASSIGN(0));
|
||||
f_verify_imm_ass(imm_ass, ra, fn, chan_nr);
|
||||
|
||||
/* Only now send the Chan Act ACK */
|
||||
f_ipa_tx(0, ts_RSL_CHAN_ACT_ACK(chan_nr, fn+10));
|
||||
|
||||
/* Check that the lchan is working */
|
||||
var octetstring l3 := '00010203040506'O;
|
||||
f_ipa_tx(0, ts_RSL_EST_IND(chan_nr, valueof(ts_RslLinkID_DCCH(0)), l3));
|
||||
|
||||
var BSSAP_N_CONNECT_ind rx_c_ind;
|
||||
BSSAP.receive(tr_BSSAP_CONNECT_ind(?, ?, tr_BSSMAP_ComplL3(l3))) -> value rx_c_ind;
|
||||
BSSAP.send(ts_BSSAP_CONNECT_res(rx_c_ind.connectionId));
|
||||
|
||||
f_sleep(1.0);
|
||||
f_shutdown_helper();
|
||||
}
|
||||
|
||||
control {
|
||||
/* CTRL interface testing */
|
||||
execute( TC_ctrl_msc_connection_status() );
|
||||
|
@ -9996,6 +10062,7 @@ control {
|
|||
|
||||
execute( TC_imm_ass_post_chan_ack() );
|
||||
execute( TC_imm_ass_pre_chan_ack() );
|
||||
execute( TC_imm_ass_pre_chan_ack_dyn_ts() );
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue