pcu: Fix incorrect FN being send over PCUIF to PCU

The event FN contains the current FN, but the message should contain the
FN of the first burst of the block.

Change-Id: Iba0b1d1a3d7d875c5443a7bcaff399f9681624ad
diff --git a/pcu/PCUIF_RAW_Components.ttcn b/pcu/PCUIF_RAW_Components.ttcn
index 6d29404..5516d83 100644
--- a/pcu/PCUIF_RAW_Components.ttcn
+++ b/pcu/PCUIF_RAW_Components.ttcn
@@ -278,6 +278,7 @@
 runs on RAW_PCU_BTS_CT {
 	var PCUIF_Message pcu_msg;
 	var RAW_PCU_Event event;
+	var integer ev_begin_fn;
 
 	[] CLCK.receive(tr_RAW_PCU_EV(TDMA_EV_PDTCH_BLOCK_BEG)) -> value event {
 		/* If the RTS queue for PDTCH is not empty, send a message */
@@ -296,23 +297,27 @@
 		repeat;
 		}
 	[lengthof(pdtch_data_queue) > 0] CLCK.receive(tr_RAW_PCU_EV(TDMA_EV_PDTCH_BLOCK_END)) -> value event {
+		/* FN matching the beginning of current block: */
+		ev_begin_fn := event.data.tdma_fn - 3;
 		/* Dequeue a DATA.ind message */
 		f_PCUIF_MsgQueue_dequeue(pdtch_data_queue, pcu_msg);
 
 		/* Patch TDMA frame / block number */
-		pcu_msg.u.data_ind.fn := event.data.tdma_fn;
+		pcu_msg.u.data_ind.fn := ev_begin_fn;
 		pcu_msg.u.data_ind.block_nr := 0; /* FIXME! */
 
 		PCUIF.send(pcu_msg); /* Send to the PCU and notify the TC */
-		TC.send(ts_RAW_PCU_CLCK_EV(TDMA_EV_PDTCH_BLOCK_SENT, event.data.tdma_fn));
+		TC.send(ts_RAW_PCU_CLCK_EV(TDMA_EV_PDTCH_BLOCK_SENT, ev_begin_fn));
 		repeat;
 		}
 	[lengthof(ptcch_rts_queue) > 0] CLCK.receive(tr_RAW_PCU_EV(TDMA_EV_PTCCH_DL_BLOCK)) -> value event {
+		/* FN matching the beginning of current block (PTCCH is interleaved over 4 non-consecutive bursts): */
+		ev_begin_fn := event.data.tdma_fn - 78;
 		/* Dequeue an RTS.req message for PTCCH */
 		f_PCUIF_MsgQueue_dequeue(ptcch_rts_queue, pcu_msg);
 
 		/* Patch TDMA frame / block number and send */
-		pcu_msg.u.rts_req.fn := event.data.tdma_fn;
+		pcu_msg.u.rts_req.fn := ev_begin_fn;
 		pcu_msg.u.rts_req.block_nr := 0; /* FIXME! */
 		PCUIF.send(pcu_msg);
 		repeat;