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 := {
diff --git a/library/RSL_Types.ttcn b/library/RSL_Types.ttcn
index 16ce506..10284b8 100644
--- a/library/RSL_Types.ttcn
+++ b/library/RSL_Types.ttcn
@@ -1515,6 +1515,24 @@
 			*
 		}
 	}
+
+	template RSL_Message tr_RSL_MODE_MODIFY_REQ_with_OSMO_TSC(template RslChannelNr chan_nr,
+								  template RSL_IE_ChannelMode mode,
+								  template uint8_t tsc_set := ?,
+								  template uint8_t tsc := ?) := {
+		msg_disc := tr_RSL_MsgDisc(RSL_MDISC_DCHAN, false),
+		msg_type := RSL_MT_MODE_MODIFY_REQ,
+		ies := {
+		    tr_RSL_IE(RSL_IE_Body:{chan_nr := chan_nr}),
+		    tr_RSL_IE(RSL_IE_Body:{chan_mode := mode}),
+		    tr_RSL_IE(RSL_IE_Body:{osmo_training_sequence := {
+							len := ?,
+							tsc_set := tsc_set,
+							tsc := tsc
+						  }
+					  })
+		}
+	};
 	
 	/* 8.4.10 BTS -> BSC */
 	template (value) RSL_Message ts_RSL_MODE_MODIFY_ACK(template (value) RslChannelNr chan_nr) := {