From 6072725622a6e003b861150bc9efd91f32e3e424 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Wed, 4 Dec 2019 21:40:25 +0100 Subject: [PATCH] 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 --- pcu/PCUIF_RAW_Components.ttcn | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pcu/PCUIF_RAW_Components.ttcn b/pcu/PCUIF_RAW_Components.ttcn index 6d2940440..5516d8312 100644 --- a/pcu/PCUIF_RAW_Components.ttcn +++ b/pcu/PCUIF_RAW_Components.ttcn @@ -278,6 +278,7 @@ private altstep as_BTS_CT_TDMASched(integer bts_nr) 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 @@ runs on RAW_PCU_BTS_CT { 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;