diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2019-12-04 21:40:25 +0100 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2019-12-06 09:51:31 +0000 |
commit | 6072725622a6e003b861150bc9efd91f32e3e424 (patch) | |
tree | c0e1ed80b64aa00b002a3ad75de43c27e7321b98 | |
parent | 6e3b68988a5413341e866613f00197dc78e05548 (diff) |
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
-rw-r--r-- | pcu/PCUIF_RAW_Components.ttcn | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pcu/PCUIF_RAW_Components.ttcn b/pcu/PCUIF_RAW_Components.ttcn index 6d294044..5516d831 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; |