ts_BSSMAP_HandoReq: Hand in raw list as argument, not IE type
Also, add new ts_BSSMAP_Paging() template.
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index bcf9738..12aabc6 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -184,8 +184,15 @@
}
}
+template BSSMAP_IE_CellIdentifierList ts_BSSMAP_IE_CidList(BSSMAP_FIELD_CellIdentificationList cid_list) := {
+ elementIdentifier := '1A'O,
+ lengthIndicator := 0, /* overwritten */
+ cellIdentifierDiscriminator := '0000'B, /* overwritten */
+ spare1_4 := '0000'B,
+ cellIdentificationList := cid_list
+}
-template PDU_BSSAP ts_BSSMAP_HandoReq(BssmapCause cause, BSSMAP_IE_CellIdentifierList cid_list)
+template PDU_BSSAP ts_BSSMAP_HandoReq(BssmapCause cause, BSSMAP_FIELD_CellIdentificationList cid_list)
modifies ts_BSSAP_BSSMAP := {
pdu := {
bssmap := {
@@ -193,7 +200,7 @@
messageType := '11'O,
cause := ts_BSSMAP_IE_Cause(cause),
responseRequest := omit,
- cellIdentifierList := cid_list,
+ cellIdentifierList := ts_BSSMAP_IE_CidList(cid_list),
circuitPoolList := omit,
currentChannelType1 := omit,
speechVersion := omit,
@@ -388,6 +395,40 @@
}
}
+function f_hex_is_odd_length(hexstring digits) return bitstring {
+ if (lengthof(digits) rem 2 == 1) {
+ return '1'B;
+ } else {
+ return '0'B;
+ }
+}
+
+template BSSMAP_IE_IMSI ts_BSSMAP_Imsi(hexstring imsi_digits) := {
+ elementIdentifier := '08'O,
+ lengthIndicator := 0, /* overwritten */
+ typeOfIdentity := '001'B, /* IMSI */
+ oddEvenIndicator := f_hex_is_odd_length(imsi_digits),
+ digits := imsi_digits
+}
+
+template PDU_BSSAP ts_BSSMAP_Paging(hexstring imsi_digits, BSSMAP_FIELD_CellIdentificationList cid_list,
+ template integer tmsi := omit)
+modifies ts_BSSAP_BSSMAP := {
+ pdu := {
+ bssmap := {
+ paging := {
+ messageType := '51'O,
+ iMSI := ts_BSSMAP_Imsi(imsi_digits),
+ tMSI := omit, // FIXME: convert tmsi,
+ cellIdentifierList := ts_BSSMAP_IE_CidList(cid_list),
+ channelNeeded := omit,
+ eMLPP_Priority := omit,
+ pagingInformation := omit /* only VGCS/VBS flag */
+ }
+ }
+ }
+}
+
}