summaryrefslogtreecommitdiffstats
path: root/src/target/fake_trx/data_if.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/target/fake_trx/data_if.py')
-rw-r--r--src/target/fake_trx/data_if.py85
1 files changed, 9 insertions, 76 deletions
diff --git a/src/target/fake_trx/data_if.py b/src/target/fake_trx/data_if.py
index 0f373ab5..8b0cd8e5 100644
--- a/src/target/fake_trx/data_if.py
+++ b/src/target/fake_trx/data_if.py
@@ -4,7 +4,7 @@
# Virtual Um-interface (fake transceiver)
# DATA interface implementation
#
-# (C) 2017 by Vadim Yanitskiy <axilirator@gmail.com>
+# (C) 2017-2018 by Vadim Yanitskiy <axilirator@gmail.com>
#
# All Rights Reserved
#
@@ -22,85 +22,18 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-import random
-
from udp_link import UDPLink
-from gsm_shared import *
+from data_msg import *
class DATAInterface(UDPLink):
- def send_l1_msg(self, burst,
- tn = None, fn = None, rssi = None):
- # Generate random timeslot index if not preset
- if tn is None:
- tn = random.randint(0, 7)
-
- # Generate random frame number if not preset
- if fn is None:
- fn = random.randint(0, GSM_HYPERFRAME)
-
- # Generate random RSSI if not preset
- if rssi is None:
- rssi = -random.randint(-75, -50)
-
- # Prepare a buffer for header and burst
- buf = []
-
- # Put timeslot index
- buf.append(tn)
-
- # Put frame number
- buf.append((fn >> 24) & 0xff)
- buf.append((fn >> 16) & 0xff)
- buf.append((fn >> 8) & 0xff)
- buf.append((fn >> 0) & 0xff)
-
- # Put RSSI
- buf.append(rssi)
-
- # HACK: put fake TOA value
- buf += [0x00] * 2
-
- # Put burst
- buf += burst
-
- # Put two unused bytes
- buf += [0x00] * 2
-
- # Send message
- self.send(bytearray(buf))
-
- def send_trx_msg(self, burst,
- tn = None, fn = None, pwr = None):
- # Generate random timeslot index if not preset
- if tn is None:
- tn = random.randint(0, 7)
-
- # Generate random frame number if not preset
- if fn is None:
- fn = random.randint(0, GSM_HYPERFRAME)
-
- # Generate random power level if not preset
- if pwr is None:
- pwr = random.randint(0, 34)
-
- # Prepare a buffer for header and burst
- buf = []
-
- # Put timeslot index
- buf.append(tn)
-
- # Put frame number
- buf.append((fn >> 24) & 0xff)
- buf.append((fn >> 16) & 0xff)
- buf.append((fn >> 8) & 0xff)
- buf.append((fn >> 0) & 0xff)
-
- # Put transmit power level
- buf.append(pwr)
+ def send_msg(self, msg):
+ # Validate a message
+ if not msg.validate():
+ raise ValueError("Message incomplete or incorrect")
- # Put burst
- buf += burst
+ # Generate TRX message
+ payload = msg.gen_msg()
# Send message
- self.send(bytearray(buf))
+ self.send(payload)