add bsc/BSC_Tests_VAMOS.ttcn

BSC_Tests_VAMOS.ttcn is separate from BSC_Tests.ttcn in order to
instruct osmo-bts-omldummy to pass BTS_FEAT_VAMOS == true in the OML BTS
attributes.

Add tests:
TC_chan_act_to_vamos()
TC_mode_modify_to_vamos_fr()
TC_mode_modify_to_vamos_hr()
TC_assign_to_secondary_lchan_fr()
TC_assign_to_secondary_lchan_hr()
TC_vamos_multiplex_tch_f_tch_f()
TC_vamos_multiplex_tch_h_tch_h_tch_h_tch_h()

Change-Id: I2c504099163a30ea102cbd26d3615ca2e5ce1e64
diff --git a/library/L3_Templates.ttcn b/library/L3_Templates.ttcn
index 5d688de..53731c0 100644
--- a/library/L3_Templates.ttcn
+++ b/library/L3_Templates.ttcn
@@ -530,7 +530,51 @@
 	}
 }
 
-template (value) PDU_ML3_MS_NW ts_RRM_ModeModifyAck(ChannelDescription2_V desc, ChannelMode_V mode) := {
+template ChannelDescription2_V tr_ChannelDescription2_V(template BIT3 timeslotNumber := ?,
+							template BIT5 channelTypeandTDMAOffset := ?) := {
+	timeslotNumber := timeslotNumber,
+	channelTypeandTDMAOffset := channelTypeandTDMAOffset,
+	octet3 := ?,
+	octet4 := ?
+}
+
+template ChannelMode_V tr_ChannelMode_V(template OCT1 mode) := {
+	mode := mode
+}
+
+template ExtendedTSCSet_TV tr_ExtendedTSCSet_TV(template BIT2 cSDomainTSCSet := ?) := {
+	elementIdentifier := '6D'O,
+	cSDomainTSCSet := cSDomainTSCSet,
+	secondPSDomainTSCAssigned := ?,
+	primaryPSDomainTSCSet := ?,
+	secondaryPSDomainTSCSet := ?,
+	secondaryPSDomainTSCValue := ?
+}
+	
+template PDU_ML3_NW_MS tr_RRM_ModeModify(template ChannelDescription2_V desc := ?,
+					 template ChannelMode_V mode := ?,
+					 template ExtendedTSCSet_TV extendedTSCSet) := {
+	discriminator := '0110'B,
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		rrm := {
+			channelModeModify := {
+				messageType := '00010000'B,
+				channelDescription := desc,
+				channelMode := mode,
+				vGCS_TargetModeIndication := omit,
+				multiRateConfiguration := omit,
+				vGCS_Ciphering_Parameters := omit,
+				extendedTSCSet := extendedTSCSet
+			}
+		}
+	}
+}
+
+template (value) PDU_ML3_MS_NW ts_RRM_ModeModifyAck(ChannelDescription2_V desc, ChannelMode_V mode,
+						    template (omit) ExtendedTSCSet_TV extendedTSCSet := omit) := {
 	discriminator := '0000'B, /* overwritten */
 	tiOrSkip := {
 		skipIndicator := '0000'B
@@ -541,7 +585,7 @@
 				messageType := '00010111'B,
 				channelDescription := desc,
 				channelMode := mode,
-				extendedTSCSet := omit
+				extendedTSCSet := extendedTSCSet
 			}
 		}
 	}
@@ -584,6 +628,57 @@
 	}
 }
 
+template ChannelMode_TV tr_ChannelMode_TV(template OCT1 mode) := {
+	elementIdentifier := '63'O,
+	mode := mode
+}
+
+template (present) PDU_ML3_NW_MS tr_RR_AssignmentCommand(
+		template ChannelDescription2_V desc := ?,
+		template ChannelMode_TV mode := ?,
+		template ExtendedTSCSet_TV extendedTSCSet := omit
+) := {
+	discriminator := '0110'B,
+	tiOrSkip := {
+		skipIndicator := '0000'B
+	},
+	msgs := {
+		rrm := {
+			assignmentCommand := {
+				messageType := '00101110'B,
+				descrOf1stChAfterTime := desc,
+				PowerCommand := ?,
+				frequencyList_at := omit,
+				cellChannelDescr := omit,
+				descrMultislotAllocation := omit,
+				modeOf1stChannel := mode,
+				channelSet2 := omit,
+				channelSet3 := omit,
+				channelSet4 := omit,
+				channelSet5 := omit,
+				channelSet6 := omit,
+				channelSet7 := omit,
+				channelSet8 := omit,
+				descrOf2ndChAfterTime := omit,
+				modeOf2ndChannel := omit,
+				mobileAllocation_at := omit,
+				startingTime := omit,
+				frequencyList_bt := omit,
+				descrOf1stCh_bt := omit,
+				descrOf2ndCh_bt := omit,
+				frequencyChannelSequence := omit,
+				mobileAllocation_bt := omit,
+				cipherModeSetting := omit,
+				vGCS_TargetModeIndication := omit,
+				multiRateConfiguration := omit,
+				vGCS_Ciphering_Parameters := omit,
+				extendedTSCSet_afterTime := extendedTSCSet,
+				extendedTSCSet_beforeTime := omit
+			}
+		}
+	}
+}
+
 template (value) PDU_ML3_MS_NW ts_RRM_AssignmentComplete(OCT1 cause) := {
 	discriminator := '0000'B, /* overwritten */
 	tiOrSkip := {