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 */
+			}
+		}
+	}
+}
+
 
 
 }