summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-01-25 01:24:44 +0600
committerVadim Yanitskiy <axilirator@gmail.com>2018-01-29 04:18:56 +0700
commit8c79e2ce6b7aa61687cdda8fd0bd01d7a2e6d9e8 (patch)
tree3d7bfc4b3f93d5622b0387cf79fc1d0d90d8e319
parentf10a8d4c9219b9284ee5922340c182e387bb80dd (diff)
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
-rw-r--r--src/target/fake_trx/data_msg.py64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/target/fake_trx/data_msg.py b/src/target/fake_trx/data_msg.py
index 9acc0f1d..c561280f 100644
--- a/src/target/fake_trx/data_msg.py
+++ b/src/target/fake_trx/data_msg.py
@@ -44,6 +44,19 @@ class DATAMSG:
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 @@ class DATAMSG_L12TRX(DATAMSG):
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
@@ -258,6 +286,32 @@ class DATAMSG_TRX2L1(DATAMSG):
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):
# Allocate an empty byte-array
@@ -350,6 +404,16 @@ if __name__ == '__main__':
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)