<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12546">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/fake_trx.py: enrich TRX logging messages<br><br>Since fake_trx.py can handle multiple transceivers, it makes sense<br>to print some info in logging messages about transceivers they<br>belong to. This acvieved by defining __str__() for Transceiver.<br><br>Some examples:<br><br>  [DEBUG] ctrl_if_trx.py:83 (127.0.0.1:5700) Recv POWEROFF cmd<br>  [INFO] ctrl_if_trx.py:85 (127.0.0.1:5700) Stopping transceiver...<br><br>  [DEBUG] ctrl_if_trx.py:95 (127.0.0.1:5700/1) Recv RXTUNE cmd<br>  [DEBUG] ctrl_if_trx.py:102 (127.0.0.1:5700/1) Recv TXTUNE cmd<br>  [DEBUG] ctrl_if_trx.py:155 (127.0.0.1:5700/1) Ignore CMD SETTSC<br>  [DEBUG] ctrl_if_trx.py:155 (127.0.0.1:5700/1) Ignore CMD SETPOWER<br><br>Change-Id: I1f706790a2da226f1418f89d2cfbb55baa6ea624<br>---<br>M src/target/trx_toolkit/ctrl_if_trx.py<br>M src/target/trx_toolkit/fake_trx.py<br>M src/target/trx_toolkit/transceiver.py<br>3 files changed, 41 insertions(+), 30 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/ctrl_if_trx.py b/src/target/trx_toolkit/ctrl_if_trx.py</span><br><span>index 83d55db..0d4935d 100644</span><br><span>--- a/src/target/trx_toolkit/ctrl_if_trx.py</span><br><span>+++ b/src/target/trx_toolkit/ctrl_if_trx.py</span><br><span>@@ -59,19 +59,19 @@</span><br><span> </span><br><span>                 # Power control</span><br><span>              if self.verify_cmd(request, "POWERON", 0):</span><br><span style="color: hsl(0, 100%, 40%);">-                    log.debug("Recv POWERON CMD")</span><br><span style="color: hsl(120, 100%, 40%);">+                       log.debug("(%s) Recv POWERON CMD" % self.trx)</span><br><span> </span><br><span>                  # Ensure transceiver isn't working</span><br><span>                       if self.trx.running:</span><br><span style="color: hsl(0, 100%, 40%);">-                            log.error("Transceiver already started")</span><br><span style="color: hsl(120, 100%, 40%);">+                            log.error("(%s) Transceiver already started" % self.trx)</span><br><span>                           return -1</span><br><span> </span><br><span>                        # Ensure RX / TX freq. are set</span><br><span>                       if (self.trx.rx_freq is None) or (self.trx.tx_freq is None):</span><br><span style="color: hsl(0, 100%, 40%);">-                            log.error("RX / TX freq. are not set")</span><br><span style="color: hsl(120, 100%, 40%);">+                              log.error("(%s) RX / TX freq. are not set" % self.trx)</span><br><span>                             return -1</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                   log.info("Starting transceiver...")</span><br><span style="color: hsl(120, 100%, 40%);">+                 log.info("(%s) Starting transceiver..." % self.trx)</span><br><span>                        self.trx.running = True</span><br><span> </span><br><span>                  # Notify transceiver about that</span><br><span>@@ -80,9 +80,9 @@</span><br><span>                  return 0</span><br><span> </span><br><span>                 elif self.verify_cmd(request, "POWEROFF", 0):</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.debug("Recv POWEROFF cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                      log.debug("(%s) Recv POWEROFF cmd" % self.trx)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                    log.info("Stopping transceiver...")</span><br><span style="color: hsl(120, 100%, 40%);">+                 log.info("(%s) Stopping transceiver..." % self.trx)</span><br><span>                        self.trx.running = False</span><br><span> </span><br><span>                         # Notify transceiver about that</span><br><span>@@ -92,26 +92,27 @@</span><br><span> </span><br><span>            # Tuning Control</span><br><span>             elif self.verify_cmd(request, "RXTUNE", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                   log.debug("Recv RXTUNE cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.debug("(%s) Recv RXTUNE cmd" % self.trx)</span><br><span> </span><br><span>                   # TODO: check freq range</span><br><span>                     self.trx.rx_freq = int(request[1]) * 1000</span><br><span>                    return 0</span><br><span> </span><br><span>                 elif self.verify_cmd(request, "TXTUNE", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                   log.debug("Recv TXTUNE cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.debug("(%s) Recv TXTUNE cmd" % self.trx)</span><br><span> </span><br><span>                   # TODO: check freq range</span><br><span>                     self.trx.tx_freq = int(request[1]) * 1000</span><br><span>                    return 0</span><br><span> </span><br><span>                 elif self.verify_cmd(request, "SETSLOT", 2):</span><br><span style="color: hsl(0, 100%, 40%);">-                  log.debug("Recv SETSLOT cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                       log.debug("(%s) Recv SETSLOT cmd" % self.trx)</span><br><span> </span><br><span>                  # Obtain TS index</span><br><span>                    ts = int(request[1])</span><br><span>                         if ts not in range(0, 8):</span><br><span style="color: hsl(0, 100%, 40%);">-                               log.error("TS index should be in range: 0..7")</span><br><span style="color: hsl(120, 100%, 40%);">+                              log.error("(%s) TS index should be in "</span><br><span style="color: hsl(120, 100%, 40%);">+                                     "range: 0..7" % self.trx)</span><br><span>                          return -1</span><br><span> </span><br><span>                        # Parse TS type</span><br><span>@@ -132,13 +133,13 @@</span><br><span> </span><br><span>          # Power measurement</span><br><span>          if self.verify_cmd(request, "MEASURE", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                    log.debug("Recv MEASURE cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                       log.debug("(%s) Recv MEASURE cmd" % self.trx)</span><br><span> </span><br><span>                  # Power Measurement interface is optional</span><br><span>                    # for Transceiver, thus may be uninitialized</span><br><span>                         if self.trx.pwr_meas is None:</span><br><span style="color: hsl(0, 100%, 40%);">-                           log.error("Power Measurement interface "</span><br><span style="color: hsl(0, 100%, 40%);">-                                      "is not initialized => rejecting command")</span><br><span style="color: hsl(120, 100%, 40%);">+                               log.error("(%s) Power Measurement interface is not "</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "initialized => rejecting command" % self.trx)</span><br><span>                          return -1</span><br><span> </span><br><span>                        # TODO: check freq range</span><br><span>@@ -151,5 +152,5 @@</span><br><span>               else:</span><br><span>                        # We don't care about other commands,</span><br><span>                    # so let's merely ignore them ;)</span><br><span style="color: hsl(0, 100%, 40%);">-                    log.debug("Ignore CMD %s" % request[0])</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.debug("(%s) Ignore CMD %s" % (self.trx, request[0]))</span><br><span>                   return 0</span><br><span>diff --git a/src/target/trx_toolkit/fake_trx.py b/src/target/trx_toolkit/fake_trx.py</span><br><span>index 0bed29d..294a819 100755</span><br><span>--- a/src/target/trx_toolkit/fake_trx.py</span><br><span>+++ b/src/target/trx_toolkit/fake_trx.py</span><br><span>@@ -145,8 +145,8 @@</span><br><span>                  return False</span><br><span> </span><br><span>             if msg.fn % self.burst_drop_period == 0:</span><br><span style="color: hsl(0, 100%, 40%);">-                        log.info("Simulation: dropping burst (fn=%u %% %u == 0)"</span><br><span style="color: hsl(0, 100%, 40%);">-                              % (msg.fn, self.burst_drop_period))</span><br><span style="color: hsl(120, 100%, 40%);">+                   log.info("(%s) Simulation: dropping burst (fn=%u %% %u == 0)"</span><br><span style="color: hsl(120, 100%, 40%);">+                               % (self, msg.fn, self.burst_drop_period))</span><br><span>                    self.burst_drop_amount -= 1</span><br><span>                  return True</span><br><span> </span><br><span>@@ -176,7 +176,7 @@</span><br><span>                # Timing Advance</span><br><span>             # Syntax: CMD SETTA <TA></span><br><span>               if self.ctrl_if.verify_cmd(request, "SETTA", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                      log.debug("Recv SETTA cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                 log.debug("(%s) Recv SETTA cmd" % self)</span><br><span> </span><br><span>                        # Store indicated value</span><br><span>                      self.ta = int(request[1])</span><br><span>@@ -185,7 +185,7 @@</span><br><span>              # Timing of Arrival simulation</span><br><span>               # Absolute form: CMD FAKE_TOA <BASE> <THRESH></span><br><span>            elif self.ctrl_if.verify_cmd(request, "FAKE_TOA", 2):</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.debug("Recv FAKE_TOA cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                      log.debug("(%s) Recv FAKE_TOA cmd" % self)</span><br><span> </span><br><span>                     # Parse and apply both base and threshold</span><br><span>                    self.toa256_base = int(request[1])</span><br><span>@@ -195,7 +195,7 @@</span><br><span>             # Timing of Arrival simulation</span><br><span>               # Relative form: CMD FAKE_TOA <+-BASE_DELTA></span><br><span>           elif self.ctrl_if.verify_cmd(request, "FAKE_TOA", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                 log.debug("Recv FAKE_TOA cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                      log.debug("(%s) Recv FAKE_TOA cmd" % self)</span><br><span> </span><br><span>                     # Parse and apply delta</span><br><span>                      self.toa256_base += int(request[1])</span><br><span>@@ -204,7 +204,7 @@</span><br><span>            # RSSI simulation</span><br><span>            # Absolute form: CMD FAKE_RSSI <BASE> <THRESH></span><br><span>           elif self.ctrl_if.verify_cmd(request, "FAKE_RSSI", 2):</span><br><span style="color: hsl(0, 100%, 40%);">-                        log.debug("Recv FAKE_RSSI cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.debug("(%s) Recv FAKE_RSSI cmd" % self)</span><br><span> </span><br><span>                    # Parse and apply both base and threshold</span><br><span>                    self.rssi_base = int(request[1])</span><br><span>@@ -214,7 +214,7 @@</span><br><span>               # RSSI simulation</span><br><span>            # Relative form: CMD FAKE_RSSI <+-BASE_DELTA></span><br><span>          elif self.ctrl_if.verify_cmd(request, "FAKE_RSSI", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                        log.debug("Recv FAKE_RSSI cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.debug("(%s) Recv FAKE_RSSI cmd" % self)</span><br><span> </span><br><span>                    # Parse and apply delta</span><br><span>                      self.rssi_base += int(request[1])</span><br><span>@@ -224,12 +224,13 @@</span><br><span>            # Syntax: CMD FAKE_DROP <AMOUNT></span><br><span>               # Dropping pattern: fn % 1 == 0</span><br><span>              elif self.ctrl_if.verify_cmd(request, "FAKE_DROP", 1):</span><br><span style="color: hsl(0, 100%, 40%);">-                        log.debug("Recv FAKE_DROP cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.debug("(%s) Recv FAKE_DROP cmd" % self)</span><br><span> </span><br><span>                    # Parse / validate amount of bursts</span><br><span>                  num = int(request[1])</span><br><span>                        if num < 0:</span><br><span style="color: hsl(0, 100%, 40%);">-                          log.error("FAKE_DROP amount shall not be negative")</span><br><span style="color: hsl(120, 100%, 40%);">+                         log.error("(%s) FAKE_DROP amount shall not "</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "be negative" % self)</span><br><span>                              return -1</span><br><span> </span><br><span>                        self.burst_drop_amount = num</span><br><span>@@ -240,18 +241,20 @@</span><br><span>                 # Syntax: CMD FAKE_DROP <AMOUNT> <FN_PERIOD></span><br><span>             # Dropping pattern: fn % period == 0</span><br><span>                 elif self.ctrl_if.verify_cmd(request, "FAKE_DROP", 2):</span><br><span style="color: hsl(0, 100%, 40%);">-                        log.debug("Recv FAKE_DROP cmd")</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.debug("(%s) Recv FAKE_DROP cmd" % self)</span><br><span> </span><br><span>                    # Parse / validate amount of bursts</span><br><span>                  num = int(request[1])</span><br><span>                        if num < 0:</span><br><span style="color: hsl(0, 100%, 40%);">-                          log.error("FAKE_DROP amount shall not be negative")</span><br><span style="color: hsl(120, 100%, 40%);">+                         log.error("(%s) FAKE_DROP amount shall not "</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "be negative" % self)</span><br><span>                              return -1</span><br><span> </span><br><span>                        # Parse / validate period</span><br><span>                    period = int(request[2])</span><br><span>                     if period <= 0:</span><br><span style="color: hsl(0, 100%, 40%);">-                              log.error("FAKE_DROP period shall be greater than zero")</span><br><span style="color: hsl(120, 100%, 40%);">+                            log.error("(%s) FAKE_DROP period shall "</span><br><span style="color: hsl(120, 100%, 40%);">+                                    "be greater than zero" % self)</span><br><span>                             return -1</span><br><span> </span><br><span>                        self.burst_drop_amount = num</span><br><span>diff --git a/src/target/trx_toolkit/transceiver.py b/src/target/trx_toolkit/transceiver.py</span><br><span>index 57ca531..4eb210b 100644</span><br><span>--- a/src/target/trx_toolkit/transceiver.py</span><br><span>+++ b/src/target/trx_toolkit/transceiver.py</span><br><span>@@ -135,6 +135,13 @@</span><br><span>                 # List of child transceivers</span><br><span>                 self.child_trx_list = TRXList()</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   def __str__(self):</span><br><span style="color: hsl(120, 100%, 40%);">+            desc = "%s:%d" % (self.remote_addr, self.base_port)</span><br><span style="color: hsl(120, 100%, 40%);">+         if self.child_idx > 0:</span><br><span style="color: hsl(120, 100%, 40%);">+                     desc += "/%d" % self.child_idx</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+            return desc</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        # To be overwritten if required,</span><br><span>     # no custom command handlers by default</span><br><span>      def ctrl_cmd_handler(self, request):</span><br><span>@@ -173,14 +180,14 @@</span><br><span> </span><br><span>             # Make sure that transceiver is configured and running</span><br><span>               if not self.running:</span><br><span style="color: hsl(0, 100%, 40%);">-                    log.warning("RX DATA message (%s), but transceiver "</span><br><span style="color: hsl(0, 100%, 40%);">-                          "is not running => dropping..." % msg.desc_hdr())</span><br><span style="color: hsl(120, 100%, 40%);">+                        log.warning("(%s) RX DATA message (%s), but transceiver "</span><br><span style="color: hsl(120, 100%, 40%);">+                           "is not running => dropping..." % (self, msg.desc_hdr()))</span><br><span>                       return None</span><br><span> </span><br><span>              # Make sure that indicated timeslot is configured</span><br><span>            if msg.tn not in self.ts_list:</span><br><span style="color: hsl(0, 100%, 40%);">-                  log.warning("RX DATA message (%s), but timeslot "</span><br><span style="color: hsl(0, 100%, 40%);">-                             "is not configured => dropping..." % msg.desc_hdr())</span><br><span style="color: hsl(120, 100%, 40%);">+                     log.warning("(%s) RX DATA message (%s), but timeslot is not "</span><br><span style="color: hsl(120, 100%, 40%);">+                               "configured => dropping..." % (self, msg.desc_hdr()))</span><br><span>                   return None</span><br><span> </span><br><span>              return msg</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12546">change 12546</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12546"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I1f706790a2da226f1418f89d2cfbb55baa6ea624 </div>
<div style="display:none"> Gerrit-Change-Number: 12546 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>