<p>Vadim Yanitskiy <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/12187">View Change</a></p><div style="white-space:pre-wrap">Approvals:
Jenkins Builder: Verified
Pau Espin Pedrol: Looks good to me, approved
</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">trx_toolkit/burst_gen.py: migrate from getopt to argparse<br><br>Change-Id: I7eb3f2e2713f1f97293bd47a2eae3b140f63fb59<br>---<br>M src/target/trx_toolkit/burst_gen.py<br>1 file changed, 83 insertions(+), 140 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/target/trx_toolkit/burst_gen.py b/src/target/trx_toolkit/burst_gen.py</span><br><span>index 0268da9..7625a27 100755</span><br><span>--- a/src/target/trx_toolkit/burst_gen.py</span><br><span>+++ b/src/target/trx_toolkit/burst_gen.py</span><br><span>@@ -28,7 +28,7 @@</span><br><span> </span><br><span> import logging as log</span><br><span> import signal</span><br><span style="color: hsl(0, 100%, 40%);">-import getopt</span><br><span style="color: hsl(120, 100%, 40%);">+import argparse</span><br><span> import sys</span><br><span> </span><br><span> from rand_burst_gen import RandBurstGen</span><br><span>@@ -38,29 +38,9 @@</span><br><span> from data_msg import *</span><br><span> </span><br><span> class Application:</span><br><span style="color: hsl(0, 100%, 40%);">- # Application variables</span><br><span style="color: hsl(0, 100%, 40%);">- remote_addr = "127.0.0.1"</span><br><span style="color: hsl(0, 100%, 40%);">- bind_addr = "0.0.0.0"</span><br><span style="color: hsl(0, 100%, 40%);">- base_port = 5700</span><br><span style="color: hsl(0, 100%, 40%);">- conn_mode = "TRX"</span><br><span style="color: hsl(0, 100%, 40%);">- output_file = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- burst_type = None</span><br><span style="color: hsl(0, 100%, 40%);">- burst_count = 1</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- # Common header fields</span><br><span style="color: hsl(0, 100%, 40%);">- fn = None</span><br><span style="color: hsl(0, 100%, 40%);">- tn = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- # Message specific header fields</span><br><span style="color: hsl(0, 100%, 40%);">- toa256 = None</span><br><span style="color: hsl(0, 100%, 40%);">- rssi = None</span><br><span style="color: hsl(0, 100%, 40%);">- pwr = None</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> def __init__(self):</span><br><span> print_copyright(CR_HOLDERS)</span><br><span style="color: hsl(0, 100%, 40%);">- self.parse_argv()</span><br><span style="color: hsl(0, 100%, 40%);">- self.check_argv()</span><br><span style="color: hsl(120, 100%, 40%);">+ self.argv = self.parse_argv()</span><br><span> </span><br><span> # Set up signal handlers</span><br><span> signal.signal(signal.SIGINT, self.sig_handler)</span><br><span>@@ -70,32 +50,35 @@</span><br><span> format = "[%(levelname)s] %(filename)s:%(lineno)d %(message)s")</span><br><span> </span><br><span> # Open requested capture file</span><br><span style="color: hsl(0, 100%, 40%);">- if self.output_file is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- self.ddf = DATADumpFile(self.output_file)</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.output_file is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ self.ddf = DATADumpFile(self.argv.output_file)</span><br><span> </span><br><span> def run(self):</span><br><span> # Init DATA interface with TRX or L1</span><br><span style="color: hsl(0, 100%, 40%);">- if self.conn_mode == "TRX":</span><br><span style="color: hsl(0, 100%, 40%);">- self.data_if = DATAInterface(self.remote_addr, self.base_port + 2,</span><br><span style="color: hsl(0, 100%, 40%);">- self.bind_addr, self.base_port + 102)</span><br><span style="color: hsl(0, 100%, 40%);">- elif self.conn_mode == "L1":</span><br><span style="color: hsl(0, 100%, 40%);">- self.data_if = DATAInterface(self.remote_addr, self.base_port + 102,</span><br><span style="color: hsl(0, 100%, 40%);">- self.bind_addr, self.base_port + 2)</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.conn_mode == "TRX":</span><br><span style="color: hsl(120, 100%, 40%);">+ self.data_if = DATAInterface(</span><br><span style="color: hsl(120, 100%, 40%);">+ self.argv.remote_addr, self.argv.base_port + 2,</span><br><span style="color: hsl(120, 100%, 40%);">+ self.argv.bind_addr, self.argv.base_port + 102)</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+ self.data_if = DATAInterface(</span><br><span style="color: hsl(120, 100%, 40%);">+ self.argv.remote_addr, self.argv.base_port + 102,</span><br><span style="color: hsl(120, 100%, 40%);">+ self.argv.bind_addr, self.argv.base_port + 2)</span><br><span> </span><br><span> # Init random burst generator</span><br><span> burst_gen = RandBurstGen()</span><br><span> </span><br><span> # Init an empty DATA message</span><br><span style="color: hsl(0, 100%, 40%);">- if self.conn_mode == "TRX":</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.conn_mode == "TRX":</span><br><span> msg = DATAMSG_L12TRX()</span><br><span style="color: hsl(0, 100%, 40%);">- elif self.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.conn_mode == "L1":</span><br><span> msg = DATAMSG_TRX2L1()</span><br><span> </span><br><span> # Generate a random frame number or use provided one</span><br><span style="color: hsl(0, 100%, 40%);">- fn_init = msg.rand_fn() if self.fn is None else self.fn</span><br><span style="color: hsl(120, 100%, 40%);">+ fn_init = msg.rand_fn() if self.argv.tdma_fn is None \</span><br><span style="color: hsl(120, 100%, 40%);">+ else self.argv.tdma_fn</span><br><span> </span><br><span> # Send as much bursts as required</span><br><span style="color: hsl(0, 100%, 40%);">- for i in range(self.burst_count):</span><br><span style="color: hsl(120, 100%, 40%);">+ for i in range(self.argv.burst_count):</span><br><span> # Randomize the message header</span><br><span> msg.rand_hdr()</span><br><span> </span><br><span>@@ -103,145 +86,105 @@</span><br><span> msg.fn = (fn_init + i) % GSM_HYPERFRAME</span><br><span> </span><br><span> # Set timeslot number</span><br><span style="color: hsl(0, 100%, 40%);">- if self.tn is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- msg.tn = self.tn</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.tdma_tn is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.tn = self.argv.tdma_tn</span><br><span> </span><br><span> # Set transmit power level</span><br><span style="color: hsl(0, 100%, 40%);">- if self.pwr is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- msg.pwr = self.pwr</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.pwr is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.pwr = self.argv.pwr</span><br><span> </span><br><span> # Set time of arrival</span><br><span style="color: hsl(0, 100%, 40%);">- if self.toa256 is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- msg.toa256 = self.toa256</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.toa is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.toa256 = int(float(self.argv.toa) * 256.0 + 0.5)</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.toa256 is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.toa256 = self.argv.toa256</span><br><span> </span><br><span> # Set RSSI</span><br><span style="color: hsl(0, 100%, 40%);">- if self.rssi is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- msg.rssi = self.rssi</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.rssi is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.rssi = self.argv.rssi</span><br><span> </span><br><span> # Generate a random burst</span><br><span style="color: hsl(0, 100%, 40%);">- if self.burst_type == "NB":</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.burst_type == "NB":</span><br><span> burst = burst_gen.gen_nb()</span><br><span style="color: hsl(0, 100%, 40%);">- elif self.burst_type == "FB":</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.burst_type == "FB":</span><br><span> burst = burst_gen.gen_fb()</span><br><span style="color: hsl(0, 100%, 40%);">- elif self.burst_type == "SB":</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.burst_type == "SB":</span><br><span> burst = burst_gen.gen_sb()</span><br><span style="color: hsl(0, 100%, 40%);">- elif self.burst_type == "AB":</span><br><span style="color: hsl(120, 100%, 40%);">+ elif self.argv.burst_type == "AB":</span><br><span> burst = burst_gen.gen_ab()</span><br><span> </span><br><span> # Convert to soft-bits in case of TRX -> L1 message</span><br><span style="color: hsl(0, 100%, 40%);">- if self.conn_mode == "L1":</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.conn_mode == "L1":</span><br><span> burst = msg.ubit2sbit(burst)</span><br><span> </span><br><span> # Set burst</span><br><span> msg.burst = burst</span><br><span> </span><br><span> log.info("Sending %d/%d %s burst %s to %s..."</span><br><span style="color: hsl(0, 100%, 40%);">- % (i + 1, self.burst_count, self.burst_type,</span><br><span style="color: hsl(0, 100%, 40%);">- msg.desc_hdr(), self.conn_mode))</span><br><span style="color: hsl(120, 100%, 40%);">+ % (i + 1, self.argv.burst_count, self.argv.burst_type,</span><br><span style="color: hsl(120, 100%, 40%);">+ msg.desc_hdr(), self.argv.conn_mode))</span><br><span> </span><br><span> # Send message</span><br><span> self.data_if.send_msg(msg)</span><br><span> </span><br><span> # Append a new message to the capture</span><br><span style="color: hsl(0, 100%, 40%);">- if self.output_file is not None:</span><br><span style="color: hsl(120, 100%, 40%);">+ if self.argv.output_file is not None:</span><br><span> self.ddf.append_msg(msg)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- def print_help(self, msg = None):</span><br><span style="color: hsl(0, 100%, 40%);">- s = " Usage: " + sys.argv[0] + " [options]\n\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " Some help...\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -h --help this text\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- s += " TRX interface specific\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -o --output-file Write bursts to a capture file\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -m --conn-mode Send bursts to: TRX (default) / L1\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -r --remote-addr Set remote address (default %s)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -b --bind-addr Set local address (default %s)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -p --base-port Set base port number (default %d)\n\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- s += " Burst generation\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -B --burst-type Random burst type (NB, FB, SB, AB)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -c --burst-count How much bursts to send (default 1)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -f --frame-number Set frame number (default random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " -t --timeslot Set timeslot index (default random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " --pwr Set power level (default random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " --rssi Set RSSI (default random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " --toa Set ToA in symbols (default random)\n" \</span><br><span style="color: hsl(0, 100%, 40%);">- " --toa256 Set ToA in 1/256 symbol periods\n"</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- print(s % (self.remote_addr, self.bind_addr, self.base_port))</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- if msg is not None:</span><br><span style="color: hsl(0, 100%, 40%);">- print(msg)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> def parse_argv(self):</span><br><span style="color: hsl(0, 100%, 40%);">- try:</span><br><span style="color: hsl(0, 100%, 40%);">- opts, args = getopt.getopt(sys.argv[1:],</span><br><span style="color: hsl(0, 100%, 40%);">- "o:m:r:b:p:B:c:f:t:h",</span><br><span style="color: hsl(0, 100%, 40%);">- [</span><br><span style="color: hsl(0, 100%, 40%);">- "help",</span><br><span style="color: hsl(0, 100%, 40%);">- "output-file="</span><br><span style="color: hsl(0, 100%, 40%);">- "conn-mode=",</span><br><span style="color: hsl(0, 100%, 40%);">- "remote-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">- "bind-addr=",</span><br><span style="color: hsl(0, 100%, 40%);">- "base-port=",</span><br><span style="color: hsl(0, 100%, 40%);">- "burst-type=",</span><br><span style="color: hsl(0, 100%, 40%);">- "burst-count=",</span><br><span style="color: hsl(0, 100%, 40%);">- "frame-number=",</span><br><span style="color: hsl(0, 100%, 40%);">- "timeslot=",</span><br><span style="color: hsl(0, 100%, 40%);">- "rssi=",</span><br><span style="color: hsl(0, 100%, 40%);">- "toa=",</span><br><span style="color: hsl(0, 100%, 40%);">- "toa256=",</span><br><span style="color: hsl(0, 100%, 40%);">- "pwr=",</span><br><span style="color: hsl(0, 100%, 40%);">- ])</span><br><span style="color: hsl(0, 100%, 40%);">- except getopt.GetoptError as err:</span><br><span style="color: hsl(0, 100%, 40%);">- self.print_help("[!] " + str(err))</span><br><span style="color: hsl(0, 100%, 40%);">- sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+ parser = argparse.ArgumentParser(prog = "burst_gen",</span><br><span style="color: hsl(120, 100%, 40%);">+ description = "Auxiliary tool to generate and send random bursts")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- for o, v in opts:</span><br><span style="color: hsl(0, 100%, 40%);">- if o in ("-h", "--help"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.print_help()</span><br><span style="color: hsl(0, 100%, 40%);">- sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group = parser.add_argument_group("TRX interface")</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group.add_argument("-r", "--remote-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "remote_addr", type = str, default = "127.0.0.1",</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set remote address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group.add_argument("-b", "--bind-addr",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "bind_addr", type = str, default = "0.0.0.0",</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set bind address (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group.add_argument("-p", "--base-port",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "base_port", type = int, default = 6700,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set base port number (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group.add_argument("-m", "--conn-mode",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "conn_mode", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+ choices = ["TRX", "L1"], default = "TRX",</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Where to send bursts (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ trx_group.add_argument("-o", "--output-file",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "output_file", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Write bursts to a capture file")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-o", "--output-file"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.output_file = v</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-m", "--conn-mode"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.conn_mode = v</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-r", "--remote-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.remote_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-b", "--bind-addr"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.bind_addr = v</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-p", "--base-port"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.base_port = int(v)</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_group = parser.add_argument_group("Burst generation")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_group.add_argument("-B", "--burst-type",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "burst_type", type = str,</span><br><span style="color: hsl(120, 100%, 40%);">+ choices = ["NB", "FB", "SB", "AB"], default = "NB",</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Random burst type (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_group.add_argument("-c", "--burst-count", metavar = "N",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "burst_count", type = int, default = 1,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "How many bursts to send (default %(default)s)")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_group.add_argument("-f", "--frame-number", metavar = "FN",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "tdma_fn", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set TDMA frame number (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_group.add_argument("-t", "--timeslot", metavar = "TN",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "tdma_tn", type = int, choices = range(0, 8),</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set TDMA timeslot (default random)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-B", "--burst-type"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.burst_type = v</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-c", "--burst-count"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.burst_count = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-f", "--frame-number"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.fn = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">- elif o in ("-t", "--timeslot"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.tn = int(v)</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_pwr_group = bg_group.add_mutually_exclusive_group()</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_pwr_group.add_argument("--pwr", metavar = "dBm",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "pwr", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set power level (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_pwr_group.add_argument("--rssi", metavar = "dBm",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "rssi", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set RSSI (default random)")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- # Message specific header fields</span><br><span style="color: hsl(0, 100%, 40%);">- elif o == "--pwr":</span><br><span style="color: hsl(0, 100%, 40%);">- self.pwr = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">- elif o == "--rssi":</span><br><span style="color: hsl(0, 100%, 40%);">- self.rssi = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">- elif o == "--toa256":</span><br><span style="color: hsl(0, 100%, 40%);">- self.toa256 = int(v)</span><br><span style="color: hsl(0, 100%, 40%);">- elif o == "--toa":</span><br><span style="color: hsl(0, 100%, 40%);">- self.toa256 = int(float(v) * 256.0 + 0.5)</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_toa_group = bg_group.add_mutually_exclusive_group()</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_toa_group.add_argument("--toa",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "toa", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set Timing of Arrival in symbols (default random)")</span><br><span style="color: hsl(120, 100%, 40%);">+ bg_toa_group.add_argument("--toa256",</span><br><span style="color: hsl(120, 100%, 40%);">+ dest = "toa256", type = int,</span><br><span style="color: hsl(120, 100%, 40%);">+ help = "Set Timing of Arrival in 1/256 symbol periods")</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- def check_argv(self):</span><br><span style="color: hsl(0, 100%, 40%);">- # Check connection mode</span><br><span style="color: hsl(0, 100%, 40%);">- if self.conn_mode not in ("TRX", "L1"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.print_help("[!] Unknown connection type")</span><br><span style="color: hsl(0, 100%, 40%);">- sys.exit(2)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">- # Check connection mode</span><br><span style="color: hsl(0, 100%, 40%);">- if self.burst_type not in ("NB", "FB", "SB", "AB"):</span><br><span style="color: hsl(0, 100%, 40%);">- self.print_help("[!] Unknown burst type")</span><br><span style="color: hsl(0, 100%, 40%);">- sys.exit(2)</span><br><span style="color: hsl(120, 100%, 40%);">+ return parser.parse_args()</span><br><span> </span><br><span> def sig_handler(self, signum, frame):</span><br><span> log.info("Signal %d received" % signum)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/12187">change 12187</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/12187"/><meta itemprop="name" content="View Change"/></div></div>
<div style="display:none"> Gerrit-Project: osmocom-bb </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I7eb3f2e2713f1f97293bd47a2eae3b140f63fb59 </div>
<div style="display:none"> Gerrit-Change-Number: 12187 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Pau Espin Pedrol <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>