aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2019-12-04 21:40:25 +0100
committerlaforge <laforge@osmocom.org>2019-12-06 09:51:31 +0000
commit6072725622a6e003b861150bc9efd91f32e3e424 (patch)
treec0e1ed80b64aa00b002a3ad75de43c27e7321b98
parent6e3b68988a5413341e866613f00197dc78e05548 (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.ttcn11
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;