summaryrefslogtreecommitdiff
path: root/gr-blocks/lib/interleaved_short_to_complex_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-blocks/lib/interleaved_short_to_complex_impl.cc')
-rw-r--r--gr-blocks/lib/interleaved_short_to_complex_impl.cc22
1 files changed, 18 insertions, 4 deletions
diff --git a/gr-blocks/lib/interleaved_short_to_complex_impl.cc b/gr-blocks/lib/interleaved_short_to_complex_impl.cc
index 962b29b37c..bb1e229bf1 100644
--- a/gr-blocks/lib/interleaved_short_to_complex_impl.cc
+++ b/gr-blocks/lib/interleaved_short_to_complex_impl.cc
@@ -31,19 +31,24 @@
namespace gr {
namespace blocks {
- interleaved_short_to_complex::sptr interleaved_short_to_complex::make(bool vector_input)
+ interleaved_short_to_complex::sptr interleaved_short_to_complex::make(bool vector_input, bool swap)
{
- return gnuradio::get_initial_sptr(new interleaved_short_to_complex_impl(vector_input));
+ return gnuradio::get_initial_sptr(new interleaved_short_to_complex_impl(vector_input, swap));
}
- interleaved_short_to_complex_impl::interleaved_short_to_complex_impl(bool vector_input)
+ interleaved_short_to_complex_impl::interleaved_short_to_complex_impl(bool vector_input, bool swap)
: sync_decimator("interleaved_short_to_complex",
gr::io_signature::make (1, 1, (vector_input?2:1)*sizeof(short)),
gr::io_signature::make (1, 1, sizeof(gr_complex)),
vector_input?1:2),
- d_vector_input(vector_input)
+ d_vector_input(vector_input), d_swap(swap)
{
}
+
+ void interleaved_short_to_complex_impl::set_swap(bool swap)
+ {
+ d_swap = swap;
+ }
int
interleaved_short_to_complex_impl::work(int noutput_items,
@@ -55,6 +60,15 @@ namespace gr {
interleaved_short_array_to_complex (in, out, 2 * noutput_items);
+ if (d_swap) {
+ float* p = (float*)output_items[0];
+ for (int i = 0; i < noutput_items; ++i) {
+ float f = p[2*i+1];
+ p[2*i+1] = p[2*i+0];
+ p[2*i+0] = f;
+ }
+ }
+
return noutput_items;
}