MSC/BSC_ConnectionHandler: only keep SMSC address in SmsParametersRp

When sending MO or MT SMS, we never include both SM-RP-DA/OA IEs
at the same time. In case of MO SMS, SM-RP-OA is omitted, and in
case of MT SMS - SM-RP-DA is omitted.

Change-Id: Ia60bdd2498034b6b849f874cf1eee272abef2b47
This commit is contained in:
Vadim Yanitskiy 2019-12-15 14:13:39 +09:00 committed by fixeria
parent d3d54a91fa
commit 437b5a6c7d
2 changed files with 16 additions and 6 deletions

View File

@ -1618,8 +1618,7 @@ type record SmsParametersTp {
}
type record SmsParametersRp {
OCT1 msg_ref,
RP_NumberingPlan_and_NumberDigits orig optional,
RP_NumberingPlan_and_NumberDigits dest optional
RP_NumberingPlan_and_NumberDigits smsc_addr optional
}
type record SmsParameters {
SmsParametersTp tp,
@ -1639,6 +1638,16 @@ template (value) TP_DA ts_TP_DA(BIT4 npl, BIT3 ton, hexstring addr) := {
}
}
template RP_NumberingPlan_and_NumberDigits t_RP_Addr(template hexstring addr,
template BIT4 npi := '0001'B,
template BIT3 ton := '001'B,
template BIT1 ext := '1'B) := {
rP_NumberingPlanIdentification := npi,
rP_TypeOfNumber := ton,
rP_Ext := ext,
rP_NumberDigits := addr
}
template (value) SmsParameters t_SmsPars(hexstring tp_daddr := '12345'H) := {
tp := {
msg_ref := '23'O,
@ -1650,8 +1659,9 @@ template (value) SmsParameters t_SmsPars(hexstring tp_daddr := '12345'H) := {
},
rp := {
msg_ref := '42'O,
orig := omit,
dest := { '0000'B, '000'B, '0'B, '98765'H }
/* We don't really need to have both SM-RP-DA/OA here, because only one IE
* is included in MO/MT SMS, and in the most cases it's the SMSC address. */
smsc_addr := t_RP_Addr('76722337'H)
},
tid := 0,
dlci := '03'O,
@ -1700,7 +1710,7 @@ runs on BSC_ConnHdlr {
tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs,
spars.tp.udl, spars.tp.ud);
rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo);
rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, omit, spars.rp.smsc_addr, tp_mo);
l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo));
BSSAP.send(ts_PDU_DTAP_MO(l3_mo, spars.dlci, true));
/* receive CP-ACK for CP-DATA above */

View File

@ -4702,7 +4702,7 @@ runs on BSC_ConnHdlr {
tp_mo := ts_SMS_SUBMIT(spars.tp.msg_ref, spars.tp.da, spars.tp.pid, spars.tp.dcs,
spars.tp.udl, spars.tp.ud);
rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, spars.rp.orig, spars.rp.dest, tp_mo);
rp_mo := ts_RP_DATA_MO(spars.rp.msg_ref, omit, spars.rp.smsc_addr, tp_mo);
l3_mo := ts_ML3_MO_SMS(spars.tid, c_TIF_ORIG, ts_CP_DATA_MO(rp_mo));
SGsAP.send(l3_mo);