summaryrefslogtreecommitdiffstats
path: root/src/target
diff options
context:
space:
mode:
authorVadim Yanitskiy <axilirator@gmail.com>2018-12-18 05:34:18 +0700
committerVadim Yanitskiy <axilirator@gmail.com>2018-12-18 05:47:11 +0700
commite4cddb5ef10cb466d0b9a3a172c470629e48b28a (patch)
treef09ed1da637accf48bda434a899d2d73966a1d4e /src/target
parent8b3d49bd34271e1ffc5bb6910020e1479cd58b5d (diff)
trx_toolkit/data_msg.py: add optional legacy message coding flag
Some transceivers (e.g. OsmoTRX) have inherited a rudiment from OpenBTS - two dummy bytes at the end of TRX2L1 messages. Despite they are absolutely useless, some L1 implementations, such as trxcon and OpenBTS, still do expect them when checking the message length. Let's add an optional (disabled by default) argument to gen_msg(), that would enable adding those two dummy bytes. Change-Id: I0cf1314c399411886420176704cadd6e6d84787f
Diffstat (limited to 'src/target')
-rw-r--r--src/target/trx_toolkit/data_msg.py15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/target/trx_toolkit/data_msg.py b/src/target/trx_toolkit/data_msg.py
index bbc9d936..62fd29b5 100644
--- a/src/target/trx_toolkit/data_msg.py
+++ b/src/target/trx_toolkit/data_msg.py
@@ -152,7 +152,7 @@ class DATAMSG:
return struct.unpack(">L", buf)[0]
# Generates a TRX DATA message
- def gen_msg(self):
+ def gen_msg(self, legacy = False):
# Validate all the fields
if not self.validate():
raise ValueError("Message incomplete or incorrect")
@@ -174,6 +174,11 @@ class DATAMSG:
# Generate burst
buf += self.gen_burst()
+ # This is a rudiment from (legacy) OpenBTS transceiver,
+ # some L1 implementations still expect two dummy bytes.
+ if legacy:
+ buf += bytearray(2)
+
return buf
# Parses a TRX DATA message
@@ -461,6 +466,9 @@ if __name__ == '__main__':
l12trx_raw = msg_l12trx_ref.gen_msg()
trx2l1_raw = msg_trx2l1_ref.gen_msg()
+ # Encode a TRX2L1 message in legacy mode
+ trx2l1_raw_legacy = msg_trx2l1_ref.gen_msg(legacy = True)
+
log.info("Parsing generated messages back")
# Parse generated DATA messages
@@ -469,11 +477,16 @@ if __name__ == '__main__':
msg_l12trx_dec.parse_msg(l12trx_raw)
msg_trx2l1_dec.parse_msg(trx2l1_raw)
+ # Parse generated TRX2L1 message in legacy mode
+ msg_trx2l1_legacy_dec = DATAMSG_TRX2L1()
+ msg_trx2l1_legacy_dec.parse_msg(trx2l1_raw_legacy)
+
log.info("Comparing decoded messages with the reference")
# Compare bursts
assert(msg_l12trx_dec.burst == burst_l12trx_ref)
assert(msg_trx2l1_dec.burst == burst_trx2l1_ref)
+ assert(msg_trx2l1_legacy_dec.burst == burst_trx2l1_ref)
log.info("Compare bursts: OK")