MSC: Verify CSFB INDICATOR is present in CLEAR COMMAND
When a CSFB voice call is cleared by the MSC, it must include the CSFB INDICATOR in order to trigger the BSC to perform actions required for Fast Return to LTE. This patch changes TC_sgsap_lu_and_mt_call() and TC_bssap_lu_sgsap_lu_and_mt_call() to ensure the CSFB INDICATOR IE is present as expected. Change-Id: I6ce3a34f85aca7143cf7925cb9319bc679e8d395
This commit is contained in:
parent
b1b853a8ec
commit
4c422b76ff
|
@ -638,6 +638,21 @@ template PDU_BSSAP tr_BSSMAP_ClearCommand modifies tr_BSSAP_BSSMAP := {
|
|||
}
|
||||
}
|
||||
|
||||
template PDU_BSSAP tr_BSSMAP_ClearCommandCSFB modifies tr_BSSAP_BSSMAP := {
|
||||
pdu := {
|
||||
bssmap := {
|
||||
clearCommand := {
|
||||
messageType := '20'O, /* overwritten */
|
||||
layer3HeaderInfo := *,
|
||||
cause := ?,
|
||||
cSFB_Indication := {
|
||||
elementIdentifier := '8F'O
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template (value) PDU_BSSAP ts_BSSMAP_ClearComplete
|
||||
modifies ts_BSSAP_BSSMAP := {
|
||||
pdu := {
|
||||
|
|
|
@ -646,13 +646,18 @@ runs on BSC_ConnHdlr {
|
|||
setverdict(pass);
|
||||
}
|
||||
|
||||
function f_call_hangup(inout CallParameters cpars, boolean release_by_ms)
|
||||
function f_call_hangup(inout CallParameters cpars, boolean release_by_ms, boolean is_csfb := false)
|
||||
runs on BSC_ConnHdlr {
|
||||
|
||||
var MobileIdentityLV mi;
|
||||
var MNCC_PDU mncc;
|
||||
var MgcpCommand mgcp_cmd;
|
||||
var boolean respond_to_dlcx;
|
||||
var template PDU_BSSAP t_clear := tr_BSSMAP_ClearCommand;
|
||||
|
||||
if (is_csfb) {
|
||||
t_clear := tr_BSSMAP_ClearCommandCSFB;
|
||||
}
|
||||
|
||||
MNCC.send(ts_MNCC_DISC_req(cpars.mncc_callref, valueof(ts_MNCC_cause(23))));
|
||||
BSSAP.receive(tr_PDU_DTAP_MT(tr_ML3_MT_CC_DISC(cpars.transaction_id)));
|
||||
|
@ -673,7 +678,7 @@ runs on BSC_ConnHdlr {
|
|||
|
||||
/* clearing of radio channel */
|
||||
interleave {
|
||||
[] BSSAP.receive(tr_BSSMAP_ClearCommand) {
|
||||
[] BSSAP.receive(t_clear) {
|
||||
BSSAP.send(ts_BSSMAP_ClearComplete);
|
||||
BSSAP.receive(BSSAP_Conn_Prim:MSC_CONN_PRIM_DISC_IND);
|
||||
}
|
||||
|
|
|
@ -4471,7 +4471,7 @@ private function f_mt_lu_and_csfb_call(charstring id, BSC_ConnHdlrPars pars, boo
|
|||
/* Complete the call, hold it for some time and then tear it down */
|
||||
f_mt_call_complete(cpars);
|
||||
f_sleep(3.0);
|
||||
f_call_hangup(cpars, true);
|
||||
f_call_hangup(cpars, true, is_csfb := true);
|
||||
|
||||
/* Make sure that subscriber is still present and the SGs association is in tact (ref-counting) */
|
||||
f_ctrl_get_exp(IPA_CTRL, "fsm.SGs-UE.id.imsi:" & hex2str(g_pars.imsi) & ".state", "SGs-ASSOCIATED");
|
||||
|
|
Loading…
Reference in New Issue