diff options
author | Vadim Yanitskiy <axilirator@gmail.com> | 2018-12-18 05:34:18 +0700 |
---|---|---|
committer | Vadim Yanitskiy <axilirator@gmail.com> | 2018-12-18 05:47:11 +0700 |
commit | e4cddb5ef10cb466d0b9a3a172c470629e48b28a (patch) | |
tree | f09ed1da637accf48bda434a899d2d73966a1d4e | |
parent | 8b3d49bd34271e1ffc5bb6910020e1479cd58b5d (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
-rw-r--r-- | src/target/trx_toolkit/data_msg.py | 15 |
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") |