From 7a92d5fbc008ba7c3085fe1b524424a32da3a49f Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Wed, 8 Feb 2023 00:27:12 +0700 Subject: [PATCH] library/GSM_Types: rework f_enc_BcdMccMnc: split and rename * Rename f_enc_BcdMccMnc() -> f_enc_BcdMccMnc_int() * Add f_enc_BcdMccMnc() accepting a pair of GsmMcc/GsmMnc Change-Id: I033cce8f975f61ef2216de9f34f2ca418d71dc0b Related: SYS#5602 --- library/GSM_Types.ttcn | 21 +++++++++++++++------ pcu/PCU_Tests.ttcn | 6 +++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/library/GSM_Types.ttcn b/library/GSM_Types.ttcn index e74972fdb..07da576d6 100644 --- a/library/GSM_Types.ttcn +++ b/library/GSM_Types.ttcn @@ -435,15 +435,24 @@ function f_gsm_compute_tc(integer fn) return integer { type hexstring GsmBcdString with { variant "HEXORDER(low)" }; type GsmBcdString BcdMccMnc with { variant "FIELDLENGTH(6)" }; +/* Compute BcdMccMnc from a pair of GsmMcc/GsmMnc values */ +function f_enc_BcdMccMnc(GsmMcc mcc, GsmMnc mnc) return BcdMccMnc { + if (lengthof(mnc) == 2) { + mnc := mnc[0] & mnc[1] & 'F'H; + } + return mcc[0] & mcc[1] & mnc[2] & mcc[2] & mnc[0] & mnc[1]; +} + /* Compute BcdMccMnc from integer values */ -function f_enc_BcdMccMnc(uint16_t mcc, uint16_t mnc, boolean mnc_3_digits) return BcdMccMnc { - var hexstring mcc_str, mnc_str; - mcc_str := str2hex(int2str(mcc)); - mnc_str := str2hex(int2str(mnc)); +function f_enc_BcdMccMnc_int(uint16_t mcc, uint16_t mnc, boolean mnc_3_digits) return BcdMccMnc { + var hexstring mcc_str := str2hex(int2str(mcc)); + var hexstring mnc_str := str2hex(int2str(mnc)); if (mnc_3_digits == true) { - return mcc_str[0] & mcc_str[1] & mnc_str[2] & mcc_str[2] & mnc_str[0] & mnc_str[1]; + return f_enc_BcdMccMnc(mcc_str[0] & mcc_str[1] & mcc_str[2], + mnc_str[0] & mnc_str[1] & mnc_str[2]); } else { - return mcc_str[0] & mcc_str[1] & mcc_str[2] & 'F'H & mnc_str[0] & mnc_str[1]; + return f_enc_BcdMccMnc(mcc_str[0] & mcc_str[1] & mcc_str[2], + mnc_str[0] & mnc_str[1]); } } diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn index 876b282db..a537b969f 100644 --- a/pcu/PCU_Tests.ttcn +++ b/pcu/PCU_Tests.ttcn @@ -5134,7 +5134,7 @@ runs on RAW_PCU_Test_CT return RlcmacDlBlock { private function f_outbound_nacc_rim_tx_resp(PCUIF_info_ind info_ind) runs on RAW_PCU_Test_CT { - var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), + var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc_int(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), info_ind.lac), info_ind.rac), info_ind.cell_id)); @@ -5159,7 +5159,7 @@ runs on RAW_PCU_Test_CT { altstep as_outbound_nacc_rim_resolve(PCUIF_info_ind info_ind, boolean do_answer := true, boolean do_repeat := false) runs on RAW_PCU_Test_CT { /* RIM procedure: */ - var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), + var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc_int(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), info_ind.lac), info_ind.rac), info_ind.cell_id)); @@ -5627,7 +5627,7 @@ testcase TC_nacc_outbound_si_resolve_timeout() runs on RAW_PCU_Test_CT { var GsmArfcn req_arfcn := 862; var uint6_t req_bsic := 43; var boolean use_old_ctrl_iface := mp_ctrl_neigh_ip != ""; - var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), /* '262F42'H */ + var BssgpCellId src := valueof(ts_BssgpCellId(ts_RAI(ts_LAI(f_enc_BcdMccMnc_int(info_ind.mcc, info_ind.mnc, info_ind.mnc_3_digits == 1), /* '262F42'H */ info_ind.lac), info_ind.rac), info_ind.cell_id));