aboutsummaryrefslogtreecommitdiffstats
path: root/tests/correlator/acgen.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/correlator/acgen.py')
-rwxr-xr-xtests/correlator/acgen.py117
1 files changed, 117 insertions, 0 deletions
diff --git a/tests/correlator/acgen.py b/tests/correlator/acgen.py
new file mode 100755
index 0000000..f4486e4
--- /dev/null
+++ b/tests/correlator/acgen.py
@@ -0,0 +1,117 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+#
+# SPDX-License-Identifier: GPL-3.0
+#
+# GNU Radio Python Flow Graph
+# Title: Access Code Symbols Generator
+# Author: Naoki Pross
+# GNU Radio version: 3.8.2.0
+
+from gnuradio import blocks
+from gnuradio import digital
+from gnuradio import gr
+from gnuradio.filter import firdes
+import sys
+import signal
+from argparse import ArgumentParser
+from gnuradio.eng_arg import eng_float, intx
+from gnuradio import eng_notation
+
+
+class acgen(gr.top_block):
+
+ def __init__(self):
+ gr.top_block.__init__(self, "Access Code Symbols Generator")
+
+ ##################################################
+ # Variables
+ ##################################################
+ self.sps = sps = 4
+ self.samp_rate = samp_rate = 32000
+ self.excess_bw = excess_bw = 1
+ self.const = const = digital.constellation_qpsk().base()
+ self.access_code = access_code = [ 0xaa, 0xff, 0xff ]
+
+ ##################################################
+ # Blocks
+ ##################################################
+ self.digital_constellation_modulator_0 = digital.generic_mod(
+ constellation=const,
+ differential=False,
+ samples_per_symbol=sps,
+ pre_diff_code=True,
+ excess_bw=excess_bw,
+ verbose=False,
+ log=False)
+ self.blocks_vector_source_x_0 = blocks.vector_source_b([0x00] * 10 + access_code * 10, False, 1, [])
+ self.blocks_throttle_0 = blocks.throttle(gr.sizeof_char*1, samp_rate,True)
+ self.blocks_file_sink_0 = blocks.file_sink(gr.sizeof_gr_complex*1, 'acgen.dat', False)
+ self.blocks_file_sink_0.set_unbuffered(False)
+
+
+
+ ##################################################
+ # Connections
+ ##################################################
+ self.connect((self.blocks_throttle_0, 0), (self.digital_constellation_modulator_0, 0))
+ self.connect((self.blocks_vector_source_x_0, 0), (self.blocks_throttle_0, 0))
+ self.connect((self.digital_constellation_modulator_0, 0), (self.blocks_file_sink_0, 0))
+
+
+ def get_sps(self):
+ return self.sps
+
+ def set_sps(self, sps):
+ self.sps = sps
+
+ def get_samp_rate(self):
+ return self.samp_rate
+
+ def set_samp_rate(self, samp_rate):
+ self.samp_rate = samp_rate
+ self.blocks_throttle_0.set_sample_rate(self.samp_rate)
+
+ def get_excess_bw(self):
+ return self.excess_bw
+
+ def set_excess_bw(self, excess_bw):
+ self.excess_bw = excess_bw
+
+ def get_const(self):
+ return self.const
+
+ def set_const(self, const):
+ self.const = const
+
+ def get_access_code(self):
+ return self.access_code
+
+ def set_access_code(self, access_code):
+ self.access_code = access_code
+ self.blocks_vector_source_x_0.set_data([0x00] * 10 + self.access_code * 10, [])
+
+
+
+
+
+def main(top_block_cls=acgen, options=None):
+ tb = top_block_cls()
+
+ def sig_handler(sig=None, frame=None):
+ tb.stop()
+ tb.wait()
+
+ sys.exit(0)
+
+ signal.signal(signal.SIGINT, sig_handler)
+ signal.signal(signal.SIGTERM, sig_handler)
+
+ tb.start()
+
+ tb.wait()
+
+
+if __name__ == '__main__':
+ main()