library/RSL_Emulation: make use of IpaUnitId codec
Change-Id: I20e1ac35707affc6aab60397a22e33fe2bd1106e
diff --git a/library/RSL_Emulation.ttcn b/library/RSL_Emulation.ttcn
index 891e565..17e35ab 100644
--- a/library/RSL_Emulation.ttcn
+++ b/library/RSL_Emulation.ttcn
@@ -370,9 +370,7 @@
private function f_trx_conn_map_register(integer conn_id, in IpaCcmIdResp id_resp)
runs on RSL_Emulation_CT return IpaStreamId {
- var template charstring unit_id_fmt := pattern "(\d+)/(\d+)/(\d+)";
- var charstring unit_id;
- var integer trx_nr;
+ var IpaUnitId unit_id;
var integer idx;
/* Check if we have room for a new connection */
@@ -386,29 +384,21 @@
testcase.stop("IPA IDENTITY RESPONSE contains no unit-id");
}
- /* Make sure that IPA unit-id is valid */
- unit_id := oct2char(id_resp[idx].data);
- if (not match(unit_id, unit_id_fmt)) {
- testcase.stop("IPA unit-id has unknown/unexpected format");
- }
+ /* Parse IPA unit-id */
+ unit_id := dec_IpaUnitId(oct2char(id_resp[idx].data));
- /* Parse transceiver number (site/bts/trx).
- * TODO: implement and use declaratice types. */
- unit_id := regexp(unit_id, unit_id_fmt, 2);
- trx_nr := str2int(unit_id);
-
- if (trx_nr >= sizeof(TrxConnMap)) {
- testcase.stop("Transceiver #", trx_nr, " does not fit");
- } else if (TrxConnMap[trx_nr] != -1) {
- testcase.stop("Transceiver #", trx_nr, " is already connected?!?");
+ if (unit_id.trx_id >= sizeof(TrxConnMap)) {
+ testcase.stop("Transceiver #", unit_id.trx_id, " does not fit");
+ } else if (TrxConnMap[unit_id.trx_id] != -1) {
+ testcase.stop("Transceiver #", unit_id.trx_id, " is already connected?!?");
}
/* Finally, store the connection ID */
- log("Mapped TRX#", trx_nr, " to TCP/IP conn_id=", conn_id);
- TrxConnMap[trx_nr] := conn_id;
+ log("Mapped TRX#", unit_id.trx_id, " to TCP/IP conn_id=", conn_id);
+ TrxConnMap[unit_id.trx_id] := conn_id;
TrxConnNum := TrxConnNum + 1;
- return f_streamId_by_trx(trx_nr);
+ return f_streamId_by_trx(unit_id.trx_id);
}
private function f_trx_conn_map_unregister(integer conn_id)