aboutsummaryrefslogtreecommitdiffstats
path: root/op25/gr-op25_repeater/apps/tdma
diff options
context:
space:
mode:
authorMax <ikj1234i@yahoo.com>2014-02-15 10:36:22 -0500
committerMax <ikj1234i@yahoo.com>2014-02-15 10:36:22 -0500
commit40d3f823594d73d1e16d57795b30cf5c564d7b74 (patch)
tree81ed5fd25d333c1903098c4f551fc868b0fdf99e /op25/gr-op25_repeater/apps/tdma
parent62a2e1554cfe56274e002b1cf4efcb0d600b386f (diff)
basic tdma audio app
Diffstat (limited to 'op25/gr-op25_repeater/apps/tdma')
-rwxr-xr-xop25/gr-op25_repeater/apps/tdma/tdma_audio.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/op25/gr-op25_repeater/apps/tdma/tdma_audio.py b/op25/gr-op25_repeater/apps/tdma/tdma_audio.py
new file mode 100755
index 0000000..3968bb9
--- /dev/null
+++ b/op25/gr-op25_repeater/apps/tdma/tdma_audio.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python
+
+from gnuradio import gr, gru, audio, eng_notation, analog, blocks, filter
+from gnuradio.eng_option import eng_option
+from optparse import OptionParser
+import numpy as np
+
+import op25_repeater
+import lfsr
+
+class app_top_block(gr.top_block):
+ def __init__(self, options):
+ gr.top_block.__init__(self, "mhp")
+
+ self.lfsr = lfsr.p25p2_lfsr(options.nac, options.sysid, options.wacn)
+ xor_mask = ''
+ for c in self.lfsr.xorsyms:
+ xor_mask += chr(c)
+
+ IN = blocks.file_source(gr.sizeof_char, options.input_file)
+
+ slotid = options.tdma_slotid
+ FRAMER = op25_repeater.p25p2_frame(0, slotid)
+ FRAMER.set_xormask(xor_mask)
+
+ S2F = blocks.short_to_float()
+ M = blocks.multiply_const_ff(1.0 / 32767.0)
+
+ SINK = audio.sink(8000, 'plughw:0,0')
+
+ self.connect(IN, FRAMER, S2F, M, SINK)
+
+def main():
+ parser = OptionParser(option_class=eng_option)
+ parser.add_option("-v", "--verbose", action="store_true", default=False)
+ parser.add_option("-i", "--input-file", type="string", default=None, help="input file name")
+ parser.add_option("-n", "--nac", type="int", default=0, help="NAC")
+ parser.add_option("-s", "--sysid", type="int", default=0, help="sysid")
+ parser.add_option("-t", "--tdma-slotid", type="int", default=0, help="tdma-slotid (0 or 1)")
+ parser.add_option("-w", "--wacn", type="int", default=0, help="WACN")
+ (options, args) = parser.parse_args()
+ if len(args) != 0:
+ parser.print_help()
+ sys.exit(1)
+
+ assert options.tdma_slotid == 0 or options.tdma_slotid == 1
+
+ tb = app_top_block(options)
+ try:
+ tb.run()
+ except KeyboardInterrupt:
+ tb.stop()
+
+if __name__ == "__main__":
+ main()