pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmocom-bb/+/18641 )
Change subject: fake_trx: Support SETPOWER and NOMTXPOWER TRXC cmds ...................................................................... fake_trx: Support SETPOWER and NOMTXPOWER TRXC cmds By default RSSI on the Rx side is computed based on transmitter's tx power and then substracting the the Rx path loss. If FAKE_RSSI is used, then the values in there are used instead. A default hardcoded value of tx nominal power = 50 dBm is set to keep old behavior of RSSI=-60dB after calculations. Change-Id: I3ee1a32ca22c3272e66b3ca78e4f67d283844c80 --- M src/target/trx_toolkit/ctrl_if_trx.py M src/target/trx_toolkit/fake_trx.py 2 files changed, 40 insertions(+), 3 deletions(-) Approvals: fixeria: Looks good to me, but someone else must approve laforge: Looks good to me, but someone else must approve pespin: Looks good to me, approved Jenkins Builder: Verified diff --git a/src/target/trx_toolkit/ctrl_if_trx.py b/src/target/trx_toolkit/ctrl_if_trx.py index 65198cf..e841975 100644 --- a/src/target/trx_toolkit/ctrl_if_trx.py +++ b/src/target/trx_toolkit/ctrl_if_trx.py @@ -239,6 +239,19 @@ % (self.trx, ver_cur, ver_req)) return ver_req + # Set Power Attenuation + if self.verify_cmd(request, "SETPOWER", 1): + log.debug("(%s) Recv SETPOWER cmd" % self.trx) + # Parse the requested Tx Power Attenuation + att_req = int(request[1]) + self.trx.tx_att_base = att_req + return 0 + + # Retrieve Nominal Tx power + if self.verify_cmd(request, "NOMTXPOWER", 0): + log.debug("(%s) Recv NOMTXPOWER cmd" % self.trx) + return (0, [str(self.trx.tx_power_base)]) + # Wrong / unknown command else: # We don't care about other commands, diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py index f14d143..4a49fa3 100755 --- a/src/target/trx_toolkit/fake_trx.py +++ b/src/target/trx_toolkit/fake_trx.py @@ -106,8 +106,11 @@ """ + NOMINAL_TX_POWER_DEFAULT = 50 # dBm + TX_ATT_DEFAULT = 0 # dB + PATH_LOSS_DEFAULT = 110 # dB + TOA256_BASE_DEFAULT = 0 - RSSI_BASE_DEFAULT = -60 CI_BASE_DEFAULT = 90 # Default values for NOPE / IDLE indications @@ -118,9 +121,15 @@ def __init__(self, *trx_args, **trx_kwargs): Transceiver.__init__(self, *trx_args, **trx_kwargs) + # fake RSSI is disabled by default, only enabled through TRXC FAKE_RSSI. + # When disabled, RSSI is calculated based on Tx power and Rx path loss + self.fake_rssi_enabled = False + # Actual ToA, RSSI, C/I, TA values + self.tx_power_base = self.NOMINAL_TX_POWER_DEFAULT + self.tx_att_base = self.TX_ATT_DEFAULT self.toa256_base = self.TOA256_BASE_DEFAULT - self.rssi_base = self.RSSI_BASE_DEFAULT + self.rssi_base = self.NOMINAL_TX_POWER_DEFAULT - self.TX_ATT_DEFAULT - self.PATH_LOSS_DEFAULT self.ci_base = self.CI_BASE_DEFAULT self.ta = 0 @@ -156,6 +165,10 @@ return random.randint(rssi_min, rssi_max) @property + def tx_power(self): + return self.tx_power_base - self.tx_att_base + + @property def ci(self): # Check if randomization is required if self.ci_rand_threshold == 0: @@ -224,7 +237,12 @@ # Complete message header msg.toa256 = self.toa256 - msg.rssi = self.rssi + + # Apply RSSI based on transmitter: + if not self.fake_rssi_enabled: + msg.rssi = src_trx.tx_power - src_msg.pwr - self.PATH_LOSS_DEFAULT + else: # Apply fake RSSI + msg.rssi = self.rssi # Version specific fields if msg.ver >= 0x01: @@ -272,9 +290,15 @@ elif self.ctrl_if.verify_cmd(request, "FAKE_RSSI", 2): log.debug("(%s) Recv FAKE_RSSI cmd" % self) + # Use negative threshold to disable fake_rssi if previously enabled: + if int(request[2]) < 0: + self.fake_rssi_enabled = False + return 0 + # Parse and apply both base and threshold self.rssi_base = int(request[1]) self.rssi_rand_threshold = int(request[2]) + self.fake_rssi_enabled = True return 0 # RSSI simulation -- To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/18641 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmocom-bb Gerrit-Branch: master Gerrit-Change-Id: I3ee1a32ca22c3272e66b3ca78e4f67d283844c80 Gerrit-Change-Number: 18641 Gerrit-PatchSet: 6 Gerrit-Owner: pespin <pes...@sysmocom.de> Gerrit-Reviewer: Jenkins Builder Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de> Gerrit-Reviewer: laforge <lafo...@osmocom.org> Gerrit-Reviewer: pespin <pes...@sysmocom.de> Gerrit-MessageType: merged