IPA/MSC/BSC Emulation: Framework for handling multiple SCCP connections
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index aea1e01..b030072 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -44,6 +44,18 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_Reset modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			reset := {
+				messageType := '30'O,
+				cause := ?,
+				a_InterfaceSelectorForReset := *
+			}
+		}
+	}
+}
+
 template (value) PDU_BSSAP ts_BSSMAP_ResetAck modifies ts_BSSAP_BSSMAP := {
 	pdu := {
 		bssmap := {
@@ -141,6 +153,15 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_ComplL3 modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			completeLayer3Information := ?
+		}
+	}
+}
+
+
 template PDU_BSSAP ts_BSSMAP_HandoReq(BssmapCause cause, BSSMAP_IE_CellIdentifierList cid_list)
 modifies ts_BSSAP_BSSMAP := {
 	pdu := {
@@ -166,5 +187,55 @@
 	}
 }
 
+const OCT1 ChRate_TCHF	:= '08'O;
+const OCT1 ChRate_TCHH	:= '09'O;
+
+template (value) BSSMAP_IE_ChannelType ts_BSSMAP_IE_ChannelType := {
+	elementIdentifier := '0B'O,	/* overwritten */
+	lengthIndicator := 0,		/* overwritten */
+	speechOrDataIndicator := '0001'B,	/* speech */
+	spare1_4 := '0000'B,
+	channelRateAndType := ChRate_TCHF,
+	speechId_DataIndicator := '01'O	/* FRv1 */
+}
+
+template (value) BSSMAP_IE_CircuitIdentityCode ts_BSSMAP_IE_CIC(uint11_t span, uint5_t ts) := {
+	elementIdentifier := '01'O,	/* overwritten */
+	cicHigh := bit2oct(substr(int2bit(span, 11) << 5, 0, 8)),
+	cicLow := bit2oct((substr(int2bit(span, 11), 8, 3) << 5) & int2bit(ts, 5))
+}
+
+template (value) PDU_BSSAP ts_BSSMAP_AssignmentCmd(uint11_t span, uint5_t ts)
+modifies ts_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			assignmentRequest := {
+				messageType :='01'O,	/* overwritten */
+				channelType := ts_BSSMAP_IE_ChannelType,
+				layer3HeaderInfo := omit,
+				priority := omit,
+				circuitIdentityCode := ts_BSSMAP_IE_CIC(span, ts),
+				downLinkDTX_Flag := omit,
+				interferenceBandToBeUsed := omit,
+				classmarkInformationType2 := omit,
+				groupCallReference := omit,
+				talkerFlag := omit,
+				configurationEvolutionIndication := omit,
+				lsaAccesControlSuppression := omit,
+				serviceHandover := omit,
+				encryptionInformation := omit,
+				talkerPriority := omit,
+				aoIPTransportLayer := omit,
+				codecList := omit,
+				callIdentifier := omit,
+				kC128 := omit,
+				globalCallReference := omit,
+				lCLS_Configuration := omit,
+				lCLS_ConnectionStatusControl := omit,
+				lCLS_CorrelationNotNeeded := omit
+			}
+		}
+	}
+}
 
 }