gbproxy: Add test for FLOW-CONTROL-MS procedure (TC_fc_ms)

Change-Id: Ie087ee8e8adfb963d21f35c60628214d4297250d
Closes: SYS#5210
diff --git a/library/Osmocom_Gb_Types.ttcn b/library/Osmocom_Gb_Types.ttcn
index ba05f7d..c532772 100644
--- a/library/Osmocom_Gb_Types.ttcn
+++ b/library/Osmocom_Gb_Types.ttcn
@@ -1262,6 +1262,108 @@
 		}
 	}
 
+	template (value) PDU_BSSGP ts_BVC_FC_MS(GprsTlli tlli, uint16_t bmax, uint16_t bucket_leak_rate,
+						OCT1 tag) := {
+		pDU_BSSGP_FLOW_CONTROL_MS := {
+			bssgpPduType := '28'O,
+			tLLI := ts_BSSGP_TLLI(tlli),
+			tag := {
+				iEI := '1E'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 1
+				},
+				unstructured_Value := tag
+			},
+			mS_Bucket_Size := {
+				iEI := '12'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 2
+				},
+				bmax := f_oct_or_wc(bmax, 2)
+			},
+			bucket_Leak_Rate := {
+				iEI := '03'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 2
+				},
+				r_Value := f_oct_or_wc(bucket_leak_rate, 2)
+			},
+			bucket_Full_Ratio := omit,
+			flow_Control_Granularity := omit
+		}
+	}
+	template (present) PDU_BSSGP tr_BVC_FC_MS(template (present) GprsTlli tlli := ?,
+						  template (present) uint16_t bmax := ?,
+						  template (present) uint16_t bucket_leak_rate := ?,
+						  template (present) OCT1 tag := ?) := {
+		pDU_BSSGP_FLOW_CONTROL_MS := {
+			bssgpPduType := '28'O,
+			tLLI := ts_BSSGP_TLLI(tlli),
+			tag := {
+				iEI := '1E'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 1
+				},
+				unstructured_Value := tag
+			},
+			mS_Bucket_Size := {
+				iEI := '12'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 2
+				},
+				bmax := f_oct_or_wc(bmax, 2)
+			},
+			bucket_Leak_Rate := {
+				iEI := '03'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 2
+				},
+				r_Value := f_oct_or_wc(bucket_leak_rate, 2)
+			},
+			bucket_Full_Ratio := *,
+			flow_Control_Granularity := *
+		}
+	}
+
+	template (value) PDU_BSSGP ts_BVC_FC_MS_ACK(template (value) GprsTlli tlli,
+						    template (value) OCT1 tag) := {
+
+		pDU_BSSGP_FLOW_CONTROL_MS_ACK := {
+			bssgpPduType := '29'O,
+			tLLI := ts_BSSGP_TLLI(tlli),
+			tag := {
+				iEI := '1E'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 1
+				},
+				unstructured_Value := tag
+			}
+		}
+	}
+	template (present) PDU_BSSGP tr_BVC_FC_MS_ACK(template (present) GprsTlli tlli,
+						      template (present) OCT1 tag := ?) := {
+
+		pDU_BSSGP_FLOW_CONTROL_MS_ACK := {
+			bssgpPduType := '29'O,
+			tLLI := tr_BSSGP_TLLI(tlli),
+			tag := {
+				iEI := '1E'O,
+				ext := '1'B,
+				lengthIndicator := {
+					length1 := 1
+				},
+				unstructured_Value := tag
+			}
+		}
+	}
+
 	template PDU_BSSGP ts_BSSGP_STATUS(template BssgpBvci bvci, template BssgpCause cause,
 					   PDU_BSSGP pdu) := {
 		pDU_BSSGP_STATUS := {