diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2019-11-17 20:37:05 +0700 |
---|---|---|
committer | laforge <laforge@osmocom.org> | 2019-11-20 15:05:57 +0000 |
commit | b1ae186c55109dd324d8186bcb493b2fac657619 (patch) | |
tree | b216c4a7eb3bd7522ca3133ffb11eaa2b6790876 | |
parent | 65dbd471fcc46510443494d537f008de909f1a14 (diff) |
trx_toolkit/fake_trx.py: refactor L12TRX -> TRX2L1 burst transformation
The burst transformation in BurstForwarder.forward_msg() used to be
done only once, so then the resulting message was distributed over
the list of connected (and active) transceivers.
This approach limits the path loss simulation capabilities, because
a reference to the same message is passed to FakeTRX.send_data_msg().
If one transceiver changes (or removes) the burst bits, the other
transceivers would not receive the original message.
Let's do the transformation individually for each transceiver,
so the original message will always remain unchanged.
Change-Id: Ia016a3a9bb6e9f17182a7168aa5a501ae9b9978b
-rw-r--r-- | src/target/trx_toolkit/burst_fwd.py | 12 | ||||
-rwxr-xr-x | src/target/trx_toolkit/fake_trx.py | 5 |
2 files changed, 5 insertions, 12 deletions
diff --git a/src/target/trx_toolkit/burst_fwd.py b/src/target/trx_toolkit/burst_fwd.py index b418aef1..fd6013bd 100644 --- a/src/target/trx_toolkit/burst_fwd.py +++ b/src/target/trx_toolkit/burst_fwd.py @@ -65,12 +65,6 @@ class BurstForwarder: self.trx_list.remove(trx) def forward_msg(self, src_trx, rx_msg): - # Transform from L12TRX to TRX2L1 - tx_msg = rx_msg.gen_trx2l1() - if tx_msg is None: - log.error("Forwarding failed, could not transform " - "message (%s) => dropping..." % rx_msg.desc_hdr()) - # Iterate over all known transceivers for trx in self.trx_list: if trx == src_trx: @@ -81,7 +75,9 @@ class BurstForwarder: continue if trx.rx_freq != src_trx.tx_freq: continue - if tx_msg.tn not in trx.ts_list: + if rx_msg.tn not in trx.ts_list: continue - trx.send_data_msg(src_trx, rx_msg, tx_msg) + # Transform from L12TRX to TRX2L1 and forward + tx_msg = rx_msg.gen_trx2l1(ver = trx.data_if._hdr_ver) + trx.handle_data_msg(src_trx, rx_msg, tx_msg) diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py index f226f032..f0dc5a52 100755 --- a/src/target/trx_toolkit/fake_trx.py +++ b/src/target/trx_toolkit/fake_trx.py @@ -199,10 +199,7 @@ class FakeTRX(Transceiver): # Takes (partially initialized) TRX2L1 message, # simulates RF path parameters (such as RSSI), # and sends towards the L1 - def send_data_msg(self, src_trx, src_msg, msg): - # Override header version - msg.ver = self.data_if._hdr_ver - + def handle_data_msg(self, src_trx, src_msg, msg): # Complete message header msg.toa256 = self.toa256 msg.rssi = self.rssi |