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
This commit is contained in:
Vadim Yanitskiy 2023-02-08 00:27:12 +07:00
parent 59ef8e573a
commit 7a92d5fbc0
2 changed files with 18 additions and 9 deletions

View File

@ -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]);
}
}

View File

@ -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));