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

fake_trx/data_msg.py: implement header randomization

This feature could be used by both burst_gen.py and burst_send.py.

Change-Id: I724e267382ff32ef1f964b1ee6cbe99069139867
---
M src/target/fake_trx/data_msg.py
1 file changed, 64 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/24/6824/1

diff --git a/src/target/fake_trx/data_msg.py b/src/target/fake_trx/data_msg.py
index 9acc0f1..c561280 100644
--- a/src/target/fake_trx/data_msg.py
+++ b/src/target/fake_trx/data_msg.py
@@ -44,6 +44,19 @@
        def parse_hdr(self, hdr):
                raise NotImplementedError
 
+       # Generates a random frame number
+       def rand_fn(self):
+               return random.randint(0, GSM_HYPERFRAME)
+
+       # Generates a random timeslot number
+       def rand_tn(self):
+               return random.randint(0, 7)
+
+       # Randomizes the message header
+       def rand_hdr(self):
+               self.fn = self.rand_fn()
+               self.tn = self.rand_tn()
+
        # Converts unsigned soft-bits {254..0} to soft-bits {-127..127}
        def usbit2sbit(self, bits):
                buf = []
@@ -201,6 +214,21 @@
 
                return True
 
+       # Generates a random power level
+       def rand_pwr(self, min = None, max = None):
+               if min is None:
+                       min = self.PWR_MIN
+
+               if max is None:
+                       max = self.PWR_MAX
+
+               return random.randint(min, max)
+
+       # Randomizes message specific header
+       def rand_hdr(self):
+               DATAMSG.rand_hdr(self)
+               self.pwr = self.rand_pwr()
+
        # Generates message specific header part
        def gen_hdr(self):
                # Allocate an empty byte-array
@@ -257,6 +285,32 @@
                        return False
 
                return True
+
+       # Generates a random RSSI value
+       def rand_rssi(self, min = None, max = None):
+               if min is None:
+                       min = self.RSSI_MIN
+
+               if max is None:
+                       max = self.RSSI_MAX
+
+               return random.randint(min, max)
+
+       # Generates a ToA (Time of Arrival) value
+       def rand_toa(self, min = None, max = None):
+               if min is None:
+                       min = self.TOA_MIN
+
+               if max is None:
+                       max = self.TOA_MAX
+
+               return random.uniform(min, max)
+
+       # Randomizes message specific header
+       def rand_hdr(self):
+               DATAMSG.rand_hdr(self)
+               self.rssi = self.rand_rssi()
+               self.toa = self.rand_toa()
 
        # Generates message specific header part
        def gen_hdr(self):
@@ -350,6 +404,16 @@
 
        print("[?] Compare message specific data: OK")
 
+       # Validate header randomization
+       for i in range(0, 100):
+               msg_l12trx_ref.rand_hdr()
+               msg_trx2l1_ref.rand_hdr()
+
+               assert(msg_l12trx_ref.validate())
+               assert(msg_trx2l1_ref.validate())
+
+       print("[?] Validate header randomization: OK")
+
        # Bit conversation test
        usbits_ref = range(0, 256)
        sbits_ref = range(-127, 128)

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

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

Reply via email to