From 5516f2cad3555ef6de3ebcecf35147190a4dd8f4 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Mon, 22 Oct 2018 19:22:05 +0200 Subject: fake_trx: introduce CTRL commands for RSSI simulation Since FakeTRX is a proxy, it basically emulates transceiver for both osmo-bts-trx and trxcon, hence there are two separate and independent control interfaces (usually, ports 6701 and 5701). All simulation commands (see 'FAKE_*') are usually implemented on both interfaces separately: - ctrl_if_bb.py - simulation commands affecting Uplink, - ctrl_if_bts.py - simulation commands affecting Downlink. This change introduces the 'FAKE_RSSI' command for both CTRL interfaces in two variations: - absolute: CMD FAKE_RSSI - relative: CMD FAKE_RSSI <+-BASE_DELTA> where 'THRESH' affects optional value randomization. Change-Id: Ic01c31fb0304345dd7337c3ee1c7ee3c2d3e8460 --- src/target/trx_toolkit/ctrl_if_bb.py | 21 +++++++++++++++++++++ src/target/trx_toolkit/ctrl_if_bts.py | 21 +++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/target/trx_toolkit/ctrl_if_bb.py b/src/target/trx_toolkit/ctrl_if_bb.py index 808c8806..3528c98d 100644 --- a/src/target/trx_toolkit/ctrl_if_bb.py +++ b/src/target/trx_toolkit/ctrl_if_bb.py @@ -144,6 +144,27 @@ class CTRLInterfaceBB(CTRLInterface): return 0 + # RSSI simulation for Uplink + # Absolute form: CMD FAKE_RSSI + elif self.verify_cmd(request, "FAKE_RSSI", 2): + print("[i] Recv FAKE_RSSI cmd") + + # Parse and apply both base and threshold + self.burst_fwd.rssi_ul_base = int(request[1]) + self.burst_fwd.rssi_ul_threshold = int(request[2]) + + return 0 + + # RSSI simulation for Uplink + # Relative form: CMD FAKE_RSSI <+-BASE_DELTA> + elif self.verify_cmd(request, "FAKE_RSSI", 1): + print("[i] Recv FAKE_RSSI cmd") + + # Parse and apply delta + self.burst_fwd.rssi_ul_base += int(request[1]) + + return 0 + # Path loss simulation for UL: burst dropping # Syntax: CMD FAKE_DROP # Dropping pattern: fn % 1 == 0 diff --git a/src/target/trx_toolkit/ctrl_if_bts.py b/src/target/trx_toolkit/ctrl_if_bts.py index 72a03711..6ac8ffb5 100644 --- a/src/target/trx_toolkit/ctrl_if_bts.py +++ b/src/target/trx_toolkit/ctrl_if_bts.py @@ -118,6 +118,27 @@ class CTRLInterfaceBTS(CTRLInterface): return 0 + # RSSI simulation for Downlink + # Absolute form: CMD FAKE_RSSI + elif self.verify_cmd(request, "FAKE_RSSI", 2): + print("[i] Recv FAKE_RSSI cmd") + + # Parse and apply both base and threshold + self.burst_fwd.rssi_dl_base = int(request[1]) + self.burst_fwd.rssi_dl_threshold = int(request[2]) + + return 0 + + # RSSI simulation for Downlink + # Relative form: CMD FAKE_RSSI <+-BASE_DELTA> + elif self.verify_cmd(request, "FAKE_RSSI", 1): + print("[i] Recv FAKE_RSSI cmd") + + # Parse and apply delta + self.burst_fwd.rssi_dl_base += int(request[1]) + + return 0 + # Path loss simulation for DL: burst dropping # Syntax: CMD FAKE_DROP # Dropping pattern: fn % 1 == 0 -- cgit v1.2.3