From cadbce066bb35c4eb01eb77c22001439bd476ce3 Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Thu, 6 Dec 2018 05:07:29 +0700 Subject: trx_toolkit/burst_fwd.py: properly pass-filter multiple time-slots Previously it was only possible to configure a single time-slot that would be pass-filtered by a BurstForwarder instance. In some applications it would be useful to configure multiple time-slots, so let's refactor the time-slot pass-filtering algorithm. Change-Id: Ie1490adaf7a7c62c966aeb60c1898eaf3b5a1e84 --- src/target/trx_toolkit/burst_fwd.py | 11 +++++------ src/target/trx_toolkit/ctrl_if_bb.py | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/target/trx_toolkit/burst_fwd.py b/src/target/trx_toolkit/burst_fwd.py index f3eeddda..746b2814 100644 --- a/src/target/trx_toolkit/burst_fwd.py +++ b/src/target/trx_toolkit/burst_fwd.py @@ -43,11 +43,10 @@ class BurstForwarder: and transmit frequencies. It would be great to distinguish between RX and TX frequencies for both BTS and MS. - - ts_pass - currently active timeslot, configured by the MS. - It can be activated or deactivated using SETSLOT control - command from the MS. + - ts_pass_list - the list of active (i.e. configured) + timeslot numbers for the MS. A timeslot can be activated + or deactivated using SETSLOT control command from the MS. - FIXME: only a single timeslot can be activated! FIXME: there is no such list for the BTS side. == Preprocessing and measurement simulation @@ -152,7 +151,7 @@ class BurstForwarder: self.burst_ul_drop_period = 1 # Init timeslot filter (drop everything by default) - self.ts_pass = None + self.ts_pass_list = [] # Reset Timing Advance value self.ta = 0 @@ -288,7 +287,7 @@ class BurstForwarder: return None # Timeslot filter - if msg.tn != self.ts_pass: + if msg.tn not in self.ts_pass_list: return None # Path loss simulation diff --git a/src/target/trx_toolkit/ctrl_if_bb.py b/src/target/trx_toolkit/ctrl_if_bb.py index 3528c98d..97a3d9df 100644 --- a/src/target/trx_toolkit/ctrl_if_bb.py +++ b/src/target/trx_toolkit/ctrl_if_bb.py @@ -109,9 +109,21 @@ class CTRLInterfaceBB(CTRLInterface): # TS activation / deactivation # We don't care about ts_type if ts_type == 0: - self.burst_fwd.ts_pass = None + # Deactivate TS (remove from TS pass-filter list) + if ts in self.burst_fwd.ts_pass_list: + self.burst_fwd.ts_pass_list.remove(ts) + else: + print("[!] TS %u was not activated before" % ts) + # TODO: uncomment as soon as RESET is introduced + # return -1 else: - self.burst_fwd.ts_pass = ts + # Activate TS (add to TS pass-filter list) + if ts not in self.burst_fwd.ts_pass_list: + self.burst_fwd.ts_pass_list.append(ts) + else: + print("[!] TS %u was already activated before" % ts) + # TODO: uncomment as soon as RESET is introduced + # return -1 return 0 -- cgit v1.2.3