summaryrefslogtreecommitdiffstats
path: root/blocks/src/lib/op25.i
diff options
context:
space:
mode:
Diffstat (limited to 'blocks/src/lib/op25.i')
-rw-r--r--blocks/src/lib/op25.i109
1 files changed, 109 insertions, 0 deletions
diff --git a/blocks/src/lib/op25.i b/blocks/src/lib/op25.i
new file mode 100644
index 0000000..b92d10b
--- /dev/null
+++ b/blocks/src/lib/op25.i
@@ -0,0 +1,109 @@
+/* -*- C++ -*- */
+
+%feature("autodoc", "1");
+
+%include "exception.i"
+%import "gnuradio.i"
+
+%{
+#include "gnuradio_swig_bug_workaround.h"
+#include "op25_fsk4_demod_ff.h"
+#include "op25_fsk4_slicer_fb.h"
+#include "op25_decoder_bf.h"
+#include "op25_pcap_source_b.h"
+%}
+
+// ----------------------------------------------------------------
+
+/*
+ * This does some behind-the-scenes magic so we can
+ * access fsk4_square_ff from python as fsk4.square_ff
+ */
+GR_SWIG_BLOCK_MAGIC(op25, fsk4_demod_ff);
+
+/*
+ * Publicly-accesible default constuctor function for op25_fsk4_demod_bf.
+ */
+op25_fsk4_demod_ff_sptr op25_make_fsk4_demod_ff(gr_msg_queue_sptr queue, float sample_rate, float symbol_rate);
+
+class op25_fsk4_demod_ff : public gr_block
+{
+private:
+ op25_fsk4_demod_ff(gr_msg_queue_sptr queue, float sample_rate, float symbol_rate);
+};
+
+// ----------------------------------------------------------------
+
+/*
+ * This does some behind-the-scenes magic so we can invoke
+ * op25_make_slicer_fb from python as op25.slicer_fbf.
+ */
+GR_SWIG_BLOCK_MAGIC(op25, fsk4_slicer_fb);
+
+/*
+ * Publicly-accesible default constuctor function for op25_decoder_bf.
+ */
+op25_fsk4_slicer_fb_sptr op25_make_fsk4_slicer_fb(const std::vector<float> &slice_levels);
+
+/*
+ * The op25_fsk4_slicer block. Takes a series of float samples and
+ * partitions them into dibit symbols according to the slices_levels
+ * provided to the constructor.
+ */
+class op25_fsk4_slicer_fb : public gr_sync_block
+{
+private:
+ op25_fsk4_slicer_fb (const std::vector<float> &slice_levels);
+};
+
+// ----------------------------------------------------------------
+
+/*
+ * This does some behind-the-scenes magic so we can invoke
+ * op25_make_decoder_bsf from python as op25.decoder_bf.
+ */
+GR_SWIG_BLOCK_MAGIC(op25, decoder_bf);
+
+/*
+ * Publicly-accesible default constuctor function for op25_decoder_bf.
+ */
+op25_decoder_bf_sptr op25_make_decoder_bf();
+
+/**
+ * The op25_decoder_bf block. Accepts a stream of dibit symbols and
+ * produces an 8KS/s audio stream.
+ */
+class op25_decoder_bf : public gr_block
+{
+private:
+ op25_decoder_bf();
+public:
+ const char *destination() const;
+ gr_msg_queue_sptr get_msgq() const;
+ void set_msgq(gr_msg_queue_sptr msgq);
+};
+
+// ----------------------------------------------------------------
+
+/*
+ * This does some behind-the-scenes magic so we can invoke
+ * op25_make_pcap_source_b from python as op25.pcap_source_b.
+ */
+GR_SWIG_BLOCK_MAGIC(op25, pcap_source_b);
+
+/*
+ * Publicly-accesible constuctor function for op25_pcap_source.
+ */
+op25_pcap_source_b_sptr op25_make_pcap_source_b(const char *path, float delay);
+
+/*
+ * The op25_pcap_source block. Reads symbols from a tcpdump-formatted
+ * file and produces a stream of symbols of the appropriate size.
+ */
+class op25_pcap_source_b : public gr_sync_block
+{
+private:
+ op25_pcap_source_b(const char *path, float delay);
+};
+
+// ----------------------------------------------------------------