fixup pcu/GPRS_Components: do not duplicate existing functions

Both f_ms_rx_imm_ass_ccch() and f_ms_establish_ul_tbf() functions
are actually twin brothers of good old f_pcuif_rx_imm_ass() and
f_establish_tbf() with some minor changes.

The former accepts a GprsMS parameter, that is never used. The
latter simply calls f_ultbf_new_from_rr_imm_ass() in the end.

Let's avoid code duplication:

  - call f_establish_tbf() from f_ms_establish_ul_tbf(),
  - remove f_ms_rx_imm_ass_ccch(), use f_pcuif_rx_imm_ass().

After the removal of f_ms_rx_imm_ass_ccch(), the implementation
of TC_ta_idle_dl_tbf_ass() does not need the GprsMS state, so
let's make it look like it was before.

Change-Id: If6c0b8796500e96525b7b1cadb61ab2fc84b4744
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index ff5da82..8b9a471 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -266,7 +266,7 @@
 	for (var TimingAdvance ta := 0; ta < 64; ta := ta + 16) {
 		/* Establish an Uplink TBF (send RACH.ind with current TA) */
 		ms.ta := ta;
-		f_ms_establish_ul_tbf(ms, fn := 1337 + ta);
+		f_ms_establish_ul_tbf(ms);
 
 		/* Make sure Timing Advance IE matches out expectations */
 		if (ms.ul_tbf.rr_imm_ass.payload.imm_ass.timing_advance != ta) {
@@ -285,29 +285,30 @@
  * IUT that causes it to send an unreasonable Timing Advance value > 0 despite
  * no active TBF exists at the moment of establishment (idle mode). */
 testcase TC_ta_idle_dl_tbf_ass() runs on RAW_PCU_Test_CT {
-	var GprsMS ms;
+	var OCT4 tlli := f_rnd_octstring(4);
+	var GsmRrMessage rr_imm_ass;
 
 	/* Initialize NS/BSSGP side */
 	f_init_bssgp();
-	/* Initialize GPRS MS side */
-	f_init_gprs_ms();
-	ms := g_ms[0]; /* We only use first MS in this test */
 
 	/* Initialize the PCU interface abstraction */
 	f_init_raw(testcasename());
 
 	/* Establish BSSGP connection to the PCU */
 	f_bssgp_establish();
-	f_bssgp_client_llgmm_assign('FFFFFFFF'O, ms.tlli);
+	f_bssgp_client_llgmm_assign('FFFFFFFF'O, tlli);
 
 	/* SGSN sends some DL data, PCU will initiate Packet Downlink
 	 * Assignment on CCCH (PCH). We don't care about the payload. */
-	BSSGP[0].send(ts_BSSGP_DL_UD(ms.tlli, f_rnd_octstring(10)));
+	BSSGP[0].send(ts_BSSGP_DL_UD(tlli, f_rnd_octstring(10)));
+	rr_imm_ass := f_pcuif_rx_imm_ass(PCU_IF_SAPI_PCH, tr_IMM_TBF_ASS(dl := true));
 
 	/* Make sure that Timing Advance is 0 (the actual value is not known yet).
 	 * As per 3GPP S 44.018, section 3.5.3.1.2, the network *shall* initiate
 	 * the procedures defined in 3GPP TS 44.060 or use the polling mechanism. */
-	f_ms_rx_imm_ass_ccch(ms,  PCU_IF_SAPI_PCH, tr_IMM_TBF_ASS(ta := 0));
+	if (rr_imm_ass.payload.imm_ass.timing_advance != 0) {
+		setverdict(fail, "Timing Advance value doesn't match");
+	}
 
 	f_shutdown(__BFILE__, __LINE__, final := true);
 }