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;