ipa: First version that emulates both MSC and BSC up to ASSIGNMENT REQ
diff --git a/library/BSSMAP_Templates.ttcn b/library/BSSMAP_Templates.ttcn
index b030072..274f42e 100644
--- a/library/BSSMAP_Templates.ttcn
+++ b/library/BSSMAP_Templates.ttcn
@@ -11,7 +11,9 @@
 	spare := '0000000'B,
 	dlci := omit,
 	lengthIndicator := 0,	/* overwritten by codec */
-	pdu := ?
+	pdu := {
+		bssmap := ?
+	}
 }
 
 template PDU_BSSAP tr_BSSAP_BSSMAP := {
@@ -24,6 +26,27 @@
 	}
 }
 
+template PDU_BSSAP ts_BSSAP_DTAP := {
+	discriminator := '1'B,
+	spare := '0000000'B,
+	dlci := omit,
+	lengthIndicator := 0,	/* overwritten by codec */
+	pdu := {
+		dtap := ?
+	}
+}
+
+template PDU_BSSAP tr_BSSAP_DTAP := {
+	discriminator := '1'B,
+	spare := '0000000'B,
+	dlci := omit,
+	lengthIndicator := ?,
+	pdu := {
+		dtap := ?
+	}
+}
+
+
 template (value) BSSMAP_IE_Cause ts_BSSMAP_IE_Cause(BssmapCause val) := {
 	elementIdentifier := '04'O,
 	lengthIndicator := 0,
@@ -238,4 +261,119 @@
 	}
 }
 
+template PDU_BSSAP tr_BSSMAP_AssignmentCmd modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			assignmentRequest := {
+				messageType :='01'O,	/* overwritten */
+				channelType := ?,
+				layer3HeaderInfo := *,
+				priority := *,
+				circuitIdentityCode := ?,
+				downLinkDTX_Flag := *,
+				interferenceBandToBeUsed := *,
+				classmarkInformationType2 := *,
+				groupCallReference := *,
+				talkerFlag := *,
+				configurationEvolutionIndication := *,
+				lsaAccesControlSuppression := *,
+				serviceHandover := *,
+				encryptionInformation := *,
+				talkerPriority := *,
+				aoIPTransportLayer := *,
+				codecList := *,
+				callIdentifier := *,
+				kC128 := *,
+				globalCallReference := *,
+				lCLS_Configuration := *,
+				lCLS_ConnectionStatusControl := *,
+				lCLS_CorrelationNotNeeded := *
+			}
+		}
+	}
+}
+
+template (value) PDU_BSSAP ts_BSSMAP_AssignmentComplete(BSSMAP_IE_CircuitIdentityCode cic)
+modifies ts_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			assignmentComplete := {
+				messageType :='02'O,	/* overwritten */
+				circuitIdentityCode := cic,
+				cellIdentifier := omit,
+				chosenChannel := omit,
+				chosenEncryptionAlgorithm := omit,
+				circuitPool := omit,
+				speechVersion := omit,
+				lSAIdentifier := omit,
+				talkerPriority := omit,
+				aoIPTransportLayer := omit,
+				speechCodec := omit,
+				codecList := omit,
+				lCLS_BSS_Status := omit
+			}
+		}
+	}
+}
+
+template PDU_BSSAP tr_BSSMAP_AssignmentComplete modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			assignmentComplete := {
+				messageType := '02'O,	/* overwritten */
+				circuitIdentityCode := ?,
+				cellIdentifier := *,
+				chosenChannel := *,
+				chosenEncryptionAlgorithm := *,
+				circuitPool := *,
+				speechVersion := *,
+				lSAIdentifier := *,
+				talkerPriority := *,
+				aoIPTransportLayer := *,
+				speechCodec := *,
+				codecList := *,
+				lCLS_BSS_Status := *
+			}
+		}
+	}
+}
+
+template (value) PDU_BSSAP ts_BSSMAP_ClearCommand(BssmapCause cause)
+modifies ts_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			clearCommand := {
+				messageType := '20'O,	/* overwritten */
+				layer3HeaderInfo := omit,
+				cause := ts_BSSMAP_IE_Cause(cause),
+				cSFB_Indication := omit
+			}
+		}
+	}
+}
+
+template PDU_BSSAP tr_BSSMAP_ClearCommand modifies tr_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			clearCommand := {
+				messageType := '20'O,	/* overwritten */
+				layer3HeaderInfo := *,
+				cause := ?,
+				cSFB_Indication := *
+			}
+		}
+	}
+}
+
+template (value) PDU_BSSAP ts_BSSMAP_ClearComplete
+modifies ts_BSSAP_BSSMAP := {
+	pdu := {
+		bssmap := {
+			clearComplete := {
+				messageType := '21'O	/* overwritten */
+			}
+		}
+	}
+}
+
 }