diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2019-12-15 14:13:39 +0900 |
---|---|---|
committer | fixeria <axilirator@gmail.com> | 2020-01-03 12:27:17 +0000 |
commit | 437b5a6c7d490f9a124ffafc457097fe19122000 (patch) | |
tree | d26d826c3e436b1c57ae25b069b153af388140ef | |
parent | d3d54a91fab60b2299087a092a3935ed7de73616 (diff) |
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
-rw-r--r-- | msc/BSC_ConnectionHandler.ttcn | 20 | ||||
-rw-r--r-- | msc/MSC_Tests.ttcn | 2 |
2 files changed, 16 insertions, 6 deletions
diff --git a/msc/BSC_ConnectionHandler.ttcn b/msc/BSC_ConnectionHandler.ttcn index 1ce0b697..0f48ed64 100644 --- a/msc/BSC_ConnectionHandler.ttcn +++ b/msc/BSC_ConnectionHandler.ttcn @@ -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 */ diff --git a/msc/MSC_Tests.ttcn b/msc/MSC_Tests.ttcn index 05d0ef6e..439d7f14 100644 --- a/msc/MSC_Tests.ttcn +++ b/msc/MSC_Tests.ttcn @@ -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); |