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
This commit is contained in:
parent
8d70f9d9fe
commit
cadbce066b
|
@ -43,11 +43,10 @@ class BurstForwarder:
|
||||||
and transmit frequencies. It would be great to distinguish
|
and transmit frequencies. It would be great to distinguish
|
||||||
between RX and TX frequencies for both BTS and MS.
|
between RX and TX frequencies for both BTS and MS.
|
||||||
|
|
||||||
- ts_pass - currently active timeslot, configured by the MS.
|
- ts_pass_list - the list of active (i.e. configured)
|
||||||
It can be activated or deactivated using SETSLOT control
|
timeslot numbers for the MS. A timeslot can be activated
|
||||||
command from the MS.
|
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.
|
FIXME: there is no such list for the BTS side.
|
||||||
|
|
||||||
== Preprocessing and measurement simulation
|
== Preprocessing and measurement simulation
|
||||||
|
@ -152,7 +151,7 @@ class BurstForwarder:
|
||||||
self.burst_ul_drop_period = 1
|
self.burst_ul_drop_period = 1
|
||||||
|
|
||||||
# Init timeslot filter (drop everything by default)
|
# Init timeslot filter (drop everything by default)
|
||||||
self.ts_pass = None
|
self.ts_pass_list = []
|
||||||
|
|
||||||
# Reset Timing Advance value
|
# Reset Timing Advance value
|
||||||
self.ta = 0
|
self.ta = 0
|
||||||
|
@ -288,7 +287,7 @@ class BurstForwarder:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Timeslot filter
|
# Timeslot filter
|
||||||
if msg.tn != self.ts_pass:
|
if msg.tn not in self.ts_pass_list:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# Path loss simulation
|
# Path loss simulation
|
||||||
|
|
|
@ -109,9 +109,21 @@ class CTRLInterfaceBB(CTRLInterface):
|
||||||
# TS activation / deactivation
|
# TS activation / deactivation
|
||||||
# We don't care about ts_type
|
# We don't care about ts_type
|
||||||
if ts_type == 0:
|
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:
|
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
|
return 0
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue