Review at  https://gerrit.osmocom.org/6725

fake_trx: handle SETSLOT command from BB

Change-Id: I152486377ecd6777dbae7024e5d12cfdbcb17628
---
M src/target/fake_trx/burst_fwd.py
M src/target/fake_trx/ctrl_if_bb.py
M src/target/fake_trx/fake_trx.py
3 files changed, 28 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/25/6725/1

diff --git a/src/target/fake_trx/burst_fwd.py b/src/target/fake_trx/burst_fwd.py
index 161710c..1ac74c0 100644
--- a/src/target/fake_trx/burst_fwd.py
+++ b/src/target/fake_trx/burst_fwd.py
@@ -23,8 +23,8 @@
 # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 class BurstForwarder:
-       # Timeslot filter
-       ts_pass = 0
+       # Timeslot filter (drop everything by default)
+       ts_pass = None
 
        def __init__(self, bts_link, bb_link):
                self.bts_link = bts_link
diff --git a/src/target/fake_trx/ctrl_if_bb.py 
b/src/target/fake_trx/ctrl_if_bb.py
index f840c09..3882b6a 100644
--- a/src/target/fake_trx/ctrl_if_bb.py
+++ b/src/target/fake_trx/ctrl_if_bb.py
@@ -27,6 +27,7 @@
 class CTRLInterfaceBB(CTRLInterface):
        # Internal state variables
        trx_started = False
+       burst_fwd = None
        rx_freq = None
        tx_freq = None
        pm = None
@@ -93,6 +94,30 @@
 
                        return (0, [meas_dbm])
 
+               elif self.verify_cmd(request, "SETSLOT", 2):
+                       print("[i] Recv SETSLOT cmd")
+
+                       if self.burst_fwd is None:
+                               return -1
+
+                       # Obtain TS index
+                       ts = int(request[1])
+                       if ts not in range(0, 8):
+                               print("[!] TS index should be in range: 0..7")
+                               return -1
+
+                       # Parse TS type
+                       ts_type = int(request[2])
+
+                       # TS activation / deactivation
+                       # We don't care about ts_type
+                       if ts_type == 0:
+                               self.burst_fwd.ts_pass = None
+                       else:
+                               self.burst_fwd.ts_pass = ts
+
+                       return 0
+
                # Wrong / unknown command
                else:
                        # We don't care about other commands,
diff --git a/src/target/fake_trx/fake_trx.py b/src/target/fake_trx/fake_trx.py
index 724a520..533b264 100755
--- a/src/target/fake_trx/fake_trx.py
+++ b/src/target/fake_trx/fake_trx.py
@@ -80,6 +80,7 @@
                self.bb_data = UDPLink(self.bb_addr,
                        self.bb_base_port + 102, self.bb_base_port + 2)
                self.burst_fwd = BurstForwarder(self.bts_data, self.bb_data)
+               self.bb_ctrl.burst_fwd = self.burst_fwd
 
                # Share clock between BTS and BB
                self.bts_clck = UDPLink(self.bts_addr,

-- 
To view, visit https://gerrit.osmocom.org/6725
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I152486377ecd6777dbae7024e5d12cfdbcb17628
Gerrit-PatchSet: 1
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>

Reply via email to