diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2018-01-25 01:24:44 +0600 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2018-01-29 04:18:56 +0700 |
commit | 8c79e2ce6b7aa61687cdda8fd0bd01d7a2e6d9e8 (patch) | |
tree | 3d7bfc4b3f93d5622b0387cf79fc1d0d90d8e319 /src | |
parent | f10a8d4c9219b9284ee5922340c182e387bb80dd (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
Diffstat (limited to 'src')
-rw-r--r-- | src/target/fake_trx/data_msg.py | 64 |
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) |