summaryrefslogtreecommitdiff
path: root/gr-utils
diff options
context:
space:
mode:
Diffstat (limited to 'gr-utils')
-rw-r--r--gr-utils/CMakeLists.txt2
-rw-r--r--gr-utils/octave/cic_comp_taps.m45
-rw-r--r--gr-utils/octave/cool.m50
-rw-r--r--gr-utils/octave/db_width.m35
-rw-r--r--gr-utils/octave/filter_tools.m42
-rw-r--r--gr-utils/octave/is_complex.m24
-rw-r--r--gr-utils/octave/lp_to_bp.m27
-rw-r--r--gr-utils/octave/plot_cic_decimator_response.m44
-rw-r--r--gr-utils/octave/plot_freq_response.m36
-rw-r--r--gr-utils/octave/plot_freq_response_db.m39
-rw-r--r--gr-utils/octave/plot_freq_response_phase.m38
-rw-r--r--gr-utils/octave/plotfft.m40
-rw-r--r--gr-utils/octave/plotfftavgk.m61
-rw-r--r--gr-utils/octave/plotfftavgk_db.m73
-rw-r--r--gr-utils/octave/plotfftk.m41
-rw-r--r--gr-utils/octave/plotfftk_db.m43
-rw-r--r--gr-utils/octave/put_markers.m32
-rw-r--r--gr-utils/octave/rainbow.m53
-rw-r--r--gr-utils/octave/read_char_binary.m45
-rw-r--r--gr-utils/octave/read_complex_binary.m48
-rw-r--r--gr-utils/octave/read_cshort_binary.m46
-rw-r--r--gr-utils/octave/read_float_binary.m45
-rw-r--r--gr-utils/octave/read_int_binary.m46
-rw-r--r--gr-utils/octave/read_short_binary.m45
-rw-r--r--gr-utils/octave/read_xambi.m46
-rw-r--r--gr-utils/octave/runsum.m9
-rw-r--r--gr-utils/octave/single_pole_iir.m25
-rw-r--r--gr-utils/octave/split_vect.m15
-rw-r--r--gr-utils/octave/write_float_binary.m40
-rw-r--r--gr-utils/octave/write_short_binary.m40
-rw-r--r--gr-utils/python/gr_read_file_metadata2
-rw-r--r--gr-utils/python/modtool/code_generator.py1
-rw-r--r--gr-utils/python/modtool/gr-newmod/CMakeLists.txt17
-rw-r--r--gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake26
-rw-r--r--gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioRuntime.cmake6
-rw-r--r--gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake26
-rw-r--r--gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in2
-rw-r--r--gr-utils/python/modtool/gr-newmod/include/howto/api.h2
-rw-r--r--gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt4
-rw-r--r--gr-utils/python/modtool/gr-newmod/lib/qa_howto.h2
-rw-r--r--gr-utils/python/modtool/gr-newmod/lib/test_howto.cc4
-rw-r--r--gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt6
-rw-r--r--gr-utils/python/modtool/gr-newmod/swig/howto_swig.i2
-rw-r--r--gr-utils/python/modtool/modtool_add.py4
-rw-r--r--gr-utils/python/modtool/modtool_base.py2
-rw-r--r--gr-utils/python/modtool/modtool_info.py6
-rw-r--r--gr-utils/python/modtool/templates.py79
47 files changed, 1259 insertions, 107 deletions
diff --git a/gr-utils/CMakeLists.txt b/gr-utils/CMakeLists.txt
index e4d64d54c0..19981ab68b 100644
--- a/gr-utils/CMakeLists.txt
+++ b/gr-utils/CMakeLists.txt
@@ -26,7 +26,7 @@
########################################################################
include(GrComponent)
GR_REGISTER_COMPONENT("gr-utils" ENABLE_GR_UTILS
- ENABLE_GR_CORE
+ ENABLE_GNURADIO_RUNTIME
ENABLE_PYTHON
)
diff --git a/gr-utils/octave/cic_comp_taps.m b/gr-utils/octave/cic_comp_taps.m
new file mode 100644
index 0000000000..9ae5cb1674
--- /dev/null
+++ b/gr-utils/octave/cic_comp_taps.m
@@ -0,0 +1,45 @@
+#
+# Copyright 2008 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+# See Altera Application Note AN455
+#
+# R = decimation factor, 8-256
+# Fc = passband (one-sided) cutoff frequency
+# L = number of taps
+
+function taps = cic_comp_taps(R, Fc, L)
+ M = 1; %% Differential delay
+ N = 4; %% Number of stages
+ B = 18; %% Coeffi. Bit-width
+ Fs = 64e6; %% (High) Sampling freq in Hz before decimation
+ Fo = R*Fc/Fs; %% Normalized Cutoff freq; 0<Fo<=0.5/M;
+ p = 2e3; %% Granularity
+ s = 0.25/p; %% Step size
+ fp = [0:s:Fo]; %% Pass band frequency samples
+ fs = (Fo+s):s:0.5; %% Stop band frequency samples
+ f = [fp fs]*2; %% Normalized frequency samples; 0<=f<=1
+ Mp = ones(1,length(fp)); %% Pass band response; Mp(1)=1
+ Mp(2:end) = abs( M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N;
+ Mf = [Mp zeros(1,length(fs))];
+ f(end) = 1;
+ h = fir2(L,f,Mf); %% Filter length L+1
+ taps = h/sum(h); %% Floating point coefficients
+endfunction
diff --git a/gr-utils/octave/cool.m b/gr-utils/octave/cool.m
new file mode 100644
index 0000000000..f8b8a5cea6
--- /dev/null
+++ b/gr-utils/octave/cool.m
@@ -0,0 +1,50 @@
+%% Copyright (C) 1999,2000 Kai Habel
+%%
+%% This program is free software; you can redistribute it and/or modify
+%% it under the terms of the GNU General Public License as published by
+%% the Free Software Foundation; either version 3 of the License, or
+%% (at your option) any later version.
+%%
+%% This program is distributed in the hope that it will be useful,
+%% but WITHOUT ANY WARRANTY; without even the implied warranty of
+%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%% GNU General Public License for more details.
+%%
+%% You should have received a copy of the GNU General Public License
+%% along with this program; if not, write to the Free Software
+%% Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
+
+%% -*- texinfo -*-
+%% @deftypefn {Function File} {} cool (@var{n})
+%% Create color colormap.
+%% (cyan to magenta)
+%% The argument @var{n} should be a scalar. If it
+%% is omitted, the length of the current colormap or 64 is assumed.
+%% @end deftypefn
+%% @seealso{colormap}
+
+%% Author: Kai Habel <kai.habel@gmx.de>
+
+function map = cool (number)
+
+ if (nargin == 0)
+ number = rows (colormap);
+ elseif (nargin == 1)
+ if (! is_scalar (number))
+ error ("cool: argument must be a scalar");
+ end
+ else
+ usage ("cool (number)");
+ end
+
+ if (number == 1)
+ map = [0, 1, 1];
+ elseif (number > 1)
+ r = (0:number - 1)' ./ (number - 1);
+ g = 1 - r;
+ b = ones (number, 1);
+ map = [r, g, b];
+ else
+ map = [];
+ end
+
diff --git a/gr-utils/octave/db_width.m b/gr-utils/octave/db_width.m
new file mode 100644
index 0000000000..e9c64cc795
--- /dev/null
+++ b/gr-utils/octave/db_width.m
@@ -0,0 +1,35 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+
+%% find the N-dB width of the given filter
+%% E.g., to find the 3-dB width, use width = db_width (taps, -3.0)
+%% the result is normalized to nyquist == 1
+
+function width = db_width (taps, db)
+ [H,w] = freqz (taps, 1, 4096);
+ Habs = abs(H);
+ max_H = max(Habs);
+ min_H = min(Habs);
+ threshold = max_H * 10^(db/20);
+ if (min_H > threshold)
+ error ("The %g dB point is never reached", db);
+ end
+ above = Habs >= threshold;
+ width = sum(above) / length (above);
diff --git a/gr-utils/octave/filter_tools.m b/gr-utils/octave/filter_tools.m
new file mode 100644
index 0000000000..552791e334
--- /dev/null
+++ b/gr-utils/octave/filter_tools.m
@@ -0,0 +1,42 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+%% equivalent to the C++ code in VrComplexFIRfilter::buildFilterComplex
+
+1;
+
+%% hamming window, nothing fancy
+
+function taps = build_filter_complex_lp (gain, ntaps)
+
+ taps = gain * (0.54 - 0.46 * cos (2 * pi * (0:ntaps-1)' / (ntaps-1)));
+
+end
+
+%% old_taps describes a low pass filter, convert it to bandpass
+%% centered at center_freq. center_freq is normalized to Fs (sampling freq)
+
+function new_taps = freq_shift_filter (old_taps, center_freq)
+
+ ntaps = length(old_taps);
+
+ new_taps = exp (j*2*pi*center_freq*(0:ntaps-1)') .* old_taps;
+
+end
diff --git a/gr-utils/octave/is_complex.m b/gr-utils/octave/is_complex.m
new file mode 100644
index 0000000000..4700467b15
--- /dev/null
+++ b/gr-utils/octave/is_complex.m
@@ -0,0 +1,24 @@
+#
+# Copyright 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function p = is_complex (x)
+ p = any (imag (x) != 0);
+endfunction;
diff --git a/gr-utils/octave/lp_to_bp.m b/gr-utils/octave/lp_to_bp.m
new file mode 100644
index 0000000000..4e73f6cc73
--- /dev/null
+++ b/gr-utils/octave/lp_to_bp.m
@@ -0,0 +1,27 @@
+#
+# Copyright 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+## transform low pass coefficients into bandpass coefficients
+
+function bp_taps = lp_to_bp (lp_taps, center_freq, sampling_freq)
+ arg = 2 * pi * center_freq / sampling_freq;
+ bp_taps = lp_taps .* exp (j*arg*(0:length(lp_taps)-1)');
+endfunction
diff --git a/gr-utils/octave/plot_cic_decimator_response.m b/gr-utils/octave/plot_cic_decimator_response.m
new file mode 100644
index 0000000000..8f06aeafed
--- /dev/null
+++ b/gr-utils/octave/plot_cic_decimator_response.m
@@ -0,0 +1,44 @@
+#
+# Copyright 2004 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plot_cic_decimator_response (R, N, M)
+ ## R = decimation rate
+ ## N = number of stages (4)
+ ## M = 1
+ gain = (R*M)^N
+ npoints = 1024;
+ w = 0:1/npoints:1-1/npoints;
+ w = w * 1 * pi;
+ ## w = w * R;
+ length(w);
+ num = sin (w*R*M/2);
+ length (num);
+ ## H = sin (w*R*M/2) ./ sin (w/2)
+ denom = sin(w/2);
+ length (denom);
+ H = (num ./ denom) .^ N;
+ H(1) = gain;
+ H = H ./ gain;
+ plot (R*w/(2*pi), 10 * log10 (H));
+ ## plot (R*w/(2*pi), H);
+endfunction
+
+
diff --git a/gr-utils/octave/plot_freq_response.m b/gr-utils/octave/plot_freq_response.m
new file mode 100644
index 0000000000..335c51d626
--- /dev/null
+++ b/gr-utils/octave/plot_freq_response.m
@@ -0,0 +1,36 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plot_freq_response (b,...)
+ if (nargin == 1)
+ ## Response of an FIR filter
+ a = 1;
+ elseif (nargin == 2)
+ ## response of an IIR filter
+ a = va_arg ();
+ endif
+
+ [H,w] = freqz (b,a);
+ plot (w/(2*pi), abs(H));
+ grid;
+ xlabel ('Normalized Frequency (Fs == 1)');
+ ylabel ('Magnitude (linear)');
+endfunction
diff --git a/gr-utils/octave/plot_freq_response_db.m b/gr-utils/octave/plot_freq_response_db.m
new file mode 100644
index 0000000000..10ce7d6e17
--- /dev/null
+++ b/gr-utils/octave/plot_freq_response_db.m
@@ -0,0 +1,39 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plot_freq_response_db (b,...)
+ if (nargin == 1)
+ ## Response of an FIR filter
+ a = 1;
+ elseif (nargin == 2)
+ ## response of an IIR filter
+ a = va_arg ();
+ endif
+
+ [H,w] = freqz (b,a);
+
+ grid;
+ xlabel ('Normalized Frequency (Fs == 1)');
+ ylabel ('Magnitude Squared (dB)');
+ abs = abs(H);
+# plot (w/(2*pi), 20 * log10 (abs/max(abs)));
+ plot (w/(2*pi), 20 * log10 (abs));
+endfunction
diff --git a/gr-utils/octave/plot_freq_response_phase.m b/gr-utils/octave/plot_freq_response_phase.m
new file mode 100644
index 0000000000..591bd5b948
--- /dev/null
+++ b/gr-utils/octave/plot_freq_response_phase.m
@@ -0,0 +1,38 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plot_freq_response_db (b,...)
+ if (nargin == 1)
+ ## Response of an FIR filter
+ a = 1;
+ elseif (nargin == 2)
+ ## response of an IIR filter
+ a = va_arg ();
+ endif
+
+ [H,w] = freqz (b,a);
+
+ grid;
+ xlabel ('Normalized Frequency (Fs == 1)');
+ ylabel ('Phase (radians)');
+ abs = abs(H);
+ plot (w/(2*pi), atan2(imag(H), real(H)))
+endfunction
diff --git a/gr-utils/octave/plotfft.m b/gr-utils/octave/plotfft.m
new file mode 100644
index 0000000000..20a2efd4c2
--- /dev/null
+++ b/gr-utils/octave/plotfft.m
@@ -0,0 +1,40 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plotfft (data, sample_rate)
+
+ if (nargin == 1)
+ sample_rate = 1.0;
+ endif;
+
+ if ((m = nargchk (1,2,nargin)))
+ usage (m);
+ endif;
+
+ len = length(data);
+ s = fft (data.*kaiser(len, 5));
+
+ incr = sample_rate/len;
+ min_x = -sample_rate/2;
+ max_x = sample_rate/2 - incr;
+ plot (min_x:incr:max_x, abs(fftshift(s)));
+
+endfunction
diff --git a/gr-utils/octave/plotfftavgk.m b/gr-utils/octave/plotfftavgk.m
new file mode 100644
index 0000000000..c82c540f39
--- /dev/null
+++ b/gr-utils/octave/plotfftavgk.m
@@ -0,0 +1,61 @@
+#
+# Copyright 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plotfftavgk_db (all_data, k, sample_rate)
+
+ if (nargin == 2)
+ sample_rate = 1.0;
+ endif;
+
+ if ((m = nargchk (2,3,nargin)))
+ usage (m);
+ endif;
+
+ ## len = 1024;
+ len = 8192;
+ ##window = ones (len, 1);
+ window = kaiser (len, 5);
+
+ s = zeros (len,1);
+
+ count = min (100, floor (length (all_data)/len));
+
+ for i = 0:count-1;
+ data = all_data((k+i)*len + 1 : (k+i+1)*len);
+ s = s + abs (fft (data.*window));
+ endfor;
+
+ s = s ./ count;
+
+ incr = sample_rate/len;
+ min_x = -sample_rate/2;
+ max_x = sample_rate/2 - incr;
+
+ x = min_x:incr:max_x;
+ ## y = 20 * log10(fftshift(s));
+ y = (fftshift(s));
+ plot (x, y);
+
+ i = find (y == max(y))
+ x(i)
+ y(i)
+
+endfunction
diff --git a/gr-utils/octave/plotfftavgk_db.m b/gr-utils/octave/plotfftavgk_db.m
new file mode 100644
index 0000000000..73cee140d0
--- /dev/null
+++ b/gr-utils/octave/plotfftavgk_db.m
@@ -0,0 +1,73 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plotfftavgk_db (all_data, k, sample_rate)
+
+ if (nargin == 2)
+ sample_rate = 1.0;
+ endif;
+
+ if ((m = nargchk (2,3,nargin)))
+ usage (m);
+ endif;
+
+ len = 1024;
+ ## len = 8192;
+ ##window = ones (len, 1);
+ #window = kaiser (len, 5);
+ window = hanning (len);
+
+ s = zeros (len,1);
+
+ count = min (100, floor (length (all_data)/len));
+
+ for i = 0:count-1;
+ data = all_data((k+i)*len + 1 : (k+i+1)*len);
+ s = s + abs (fft (data.*window));
+ endfor;
+
+ s = s ./ count;
+
+ incr = sample_rate/len;
+
+ if is_complex (all_data);
+ min_x = -sample_rate/2;
+ max_x = sample_rate/2 - incr;
+
+ x = min_x:incr:max_x;
+ y = 20 * log10(fftshift(s));
+ plot (x, y);
+ else
+ min_x = 0
+ max_x = sample_rate/2 - incr;
+
+ x = min_x:incr:max_x;
+ y = 20 * log10(s(1:len/2));
+ plot (x, y);
+
+ endif;
+
+
+ i = find (y == max(y))
+ x(i)
+ y(i)
+
+endfunction
diff --git a/gr-utils/octave/plotfftk.m b/gr-utils/octave/plotfftk.m
new file mode 100644
index 0000000000..df2bf3aca0
--- /dev/null
+++ b/gr-utils/octave/plotfftk.m
@@ -0,0 +1,41 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plotfftk (all_data, k, sample_rate)
+
+ if (nargin == 2)
+ sample_rate = 1.0;
+ endif;
+
+ if ((m = nargchk (2,3,nargin)))
+ usage (m);
+ endif;
+
+ len = 1024;
+ data = all_data(k*len + 1 : (k+1)*len);
+ s = fft (data.*kaiser(len, 5));
+
+ incr = sample_rate/len;
+ min_x = -sample_rate/2;
+ max_x = sample_rate/2 - incr;
+ plot (min_x:incr:max_x, abs(fftshift(s)));
+
+endfunction
diff --git a/gr-utils/octave/plotfftk_db.m b/gr-utils/octave/plotfftk_db.m
new file mode 100644
index 0000000000..b2c85412f7
--- /dev/null
+++ b/gr-utils/octave/plotfftk_db.m
@@ -0,0 +1,43 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function plotfftk_db (all_data, k, sample_rate)
+
+ if (nargin == 2)
+ sample_rate = 1.0;
+ endif;
+
+ if ((m = nargchk (2,3,nargin)))
+ usage (m);
+ endif;
+
+ len = 1024;
+ data = all_data(k*len + 1 : (k+1)*len);
+ ## s = fft (data.*kaiser(len, 5));
+ ## s = fft (data.*hamming(len));
+ s = fft (data.*hanning(len));
+
+ incr = sample_rate/len;
+ min_x = -sample_rate/2;
+ max_x = sample_rate/2 - incr;
+ plot (min_x:incr:max_x, 20 * log10(abs(fftshift(s))));
+
+endfunction
diff --git a/gr-utils/octave/put_markers.m b/gr-utils/octave/put_markers.m
new file mode 100644
index 0000000000..1244d31aaf
--- /dev/null
+++ b/gr-utils/octave/put_markers.m
@@ -0,0 +1,32 @@
+#
+# Copyright 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function put_markers (y)
+
+ if (nargin == 0)
+ y = 25;
+ endif;
+
+ hold on;
+ plot (3.06e6, y, '@');
+ plot (8.44e6, y, '@');
+
+endfunction
diff --git a/gr-utils/octave/rainbow.m b/gr-utils/octave/rainbow.m
new file mode 100644
index 0000000000..35fab19b89
--- /dev/null
+++ b/gr-utils/octave/rainbow.m
@@ -0,0 +1,53 @@
+## Copyright (C) 1999,2000 Kai Habel
+##
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 3 of the License, or
+## (at your option) any later version.
+##
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+## GNU General Public License for more details.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Boston, MA 02110-1301 USA
+
+## -*- texinfo -*-
+## @deftypefn {Function File} {} rainbow (@var{n})
+## Create color colormap.
+## (red through yellow, green, cyan,blue,magenta to red)
+## The argument @var{n} should be a scalar. If it
+## is omitted, the length of the current colormap or 64 is assumed.
+## @end deftypefn
+## @seealso{colormap}
+
+## Author: Kai Habel <kai.habel@gmx.de>
+
+## 2001-09-13 Paul Kienzle <pkienzle@users.sf.net>
+## * renamed to rainbow for use with tk_octave
+## * remove reference to __current_color_map__
+
+function map = rainbow (number)
+
+ if (nargin == 0)
+ number = length(colormap);
+ elseif (nargin == 1)
+ if (! is_scalar (number))
+ error ("rainbow: argument must be a scalar");
+ endif
+ else
+ usage ("rainbow (number)");
+ endif
+
+ if (number == 1)
+ map = [1, 0, 0];
+ elseif (number > 1)
+ h = linspace (0, 1, number)';
+ map = hsv2rgb ([h, ones(number, 1), ones(number, 1)]);
+ else
+ map = [];
+ endif
+
+endfunction
diff --git a/gr-utils/octave/read_char_binary.m b/gr-utils/octave/read_char_binary.m
new file mode 100644
index 0000000000..029cea7834
--- /dev/null
+++ b/gr-utils/octave/read_char_binary.m
@@ -0,0 +1,45 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function v = read_char_binary (filename, count)
+
+ %% usage: read_char (filename, [count])
+ %%
+ %% open filename and return the contents, treating them as
+ %% signed short integers
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ v = 0;
+ else
+ v = fread (f, count, 'char');
+ fclose (f);
+ end
diff --git a/gr-utils/octave/read_complex_binary.m b/gr-utils/octave/read_complex_binary.m
new file mode 100644
index 0000000000..eb81f0fa08
--- /dev/null
+++ b/gr-utils/octave/read_complex_binary.m
@@ -0,0 +1,48 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function v = read_complex_binary (filename, count)
+
+ %% usage: read_complex_binary (filename, [count])
+ %%
+ %% open filename and return the contents as a column vector,
+ %% treating them as 32 bit complex numbers
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ v = 0;
+ else
+ t = fread (f, [2, count], 'float');
+ fclose (f);
+ v = t(1,:) + t(2,:)*i;
+ [r, c] = size (v);
+ v = reshape (v, c, r);
+ end
diff --git a/gr-utils/octave/read_cshort_binary.m b/gr-utils/octave/read_cshort_binary.m
new file mode 100644
index 0000000000..149b6ca88c
--- /dev/null
+++ b/gr-utils/octave/read_cshort_binary.m
@@ -0,0 +1,46 @@
+%
+% Copyright 2001,2008 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function cv = read_cshort_binary (filename, count)
+
+ %% usage: read_cshort_binary (filename, [count])
+ %%
+ %% open filename and return the contents, treating them as
+ %% signed short integers
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ cv = 0;
+ else
+ v = fread (f, count, 'short');
+ fclose (f);
+ cv = v(1:2:end)+v(2:2:end)*j;
+ end
diff --git a/gr-utils/octave/read_float_binary.m b/gr-utils/octave/read_float_binary.m
new file mode 100644
index 0000000000..d27d09b9c1
--- /dev/null
+++ b/gr-utils/octave/read_float_binary.m
@@ -0,0 +1,45 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function v = read_float_binary (filename, count)
+
+ %% usage: read_float_binary (filename, [count])
+ %%
+ %% open filename and return the contents, treating them as
+ %% 32 bit floats
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ v = 0;
+ else
+ v = fread (f, count, 'float');
+ fclose (f);
+ end
diff --git a/gr-utils/octave/read_int_binary.m b/gr-utils/octave/read_int_binary.m
new file mode 100644
index 0000000000..cd83bb6636
--- /dev/null
+++ b/gr-utils/octave/read_int_binary.m
@@ -0,0 +1,46 @@
+%
+% Copyright 2001,2002 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function v = read_int_binary (filename, count)
+
+ %% usage: read_int_binary (filename, [count])
+ %%
+ %% open filename and return the contents, treating them as
+ %% signed integers
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ v = 0;
+ else
+ v = fread (f, count, 'int');
+ fclose (f);
+ end
+end
diff --git a/gr-utils/octave/read_short_binary.m b/gr-utils/octave/read_short_binary.m
new file mode 100644
index 0000000000..7b42f5e2be
--- /dev/null
+++ b/gr-utils/octave/read_short_binary.m
@@ -0,0 +1,45 @@
+%
+% Copyright 2001 Free Software Foundation, Inc.
+%
+% This file is part of GNU Radio
+%
+% GNU Radio is free software; you can redistribute it and/or modify
+% it under the terms of the GNU General Public License as published by
+% the Free Software Foundation; either version 3, or (at your option)
+% any later version.
+%
+% GNU Radio is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+% GNU General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with GNU Radio; see the file COPYING. If not, write to
+% the Free Software Foundation, Inc., 51 Franklin Street,
+% Boston, MA 02110-1301, USA.
+%
+
+function v = read_short_binary (filename, count)
+
+ %% usage: read_short_binary (filename, [count])
+ %%
+ %% open filename and return the contents, treating them as
+ %% signed short integers
+ %%
+
+ m = nargchk (1,2,nargin);
+ if (m)
+ usage (m);
+ end
+
+ if (nargin < 2)
+ count = Inf;
+ end
+
+ f = fopen (filename, 'rb');
+ if (f < 0)
+ v = 0;
+ else
+ v = fread (f, count, 'short');
+ fclose (f);
+ end
diff --git a/gr-utils/octave/read_xambi.m b/gr-utils/octave/read_xambi.m
new file mode 100644
index 0000000000..5adb94264e
--- /dev/null
+++ b/gr-utils/octave/read_xambi.m
@@ -0,0 +1,46 @@
+#
+# Copyright 2001,2005 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function v = read_xambi (filename)
+
+ ## usage: read_xambi (filename)
+ ##
+ ## read binary cross-ambiguity data from radar tools.
+ ## The file has an 8 float header, the first word of which specifies
+ ## the number of doppler bins.
+ ## returns a matrix
+
+ if ((m = nargchk (1,1,nargin)))
+ usage (m);
+ endif;
+
+ f = fopen (filename, "rb");
+ if (f < 0)
+ v = 0;
+ else
+ header = fread(f, 8, "float");
+ ndoppler_bins = header(1)
+ min_doppler = header(2)
+ max_doppler = header(3)
+ v = fread (f, [ndoppler_bins, Inf], "float");
+ fclose (f);
+ endif;
+endfunction;
diff --git a/gr-utils/octave/runsum.m b/gr-utils/octave/runsum.m
new file mode 100644
index 0000000000..0f530b0159
--- /dev/null
+++ b/gr-utils/octave/runsum.m
@@ -0,0 +1,9 @@
+function r = runsum(x)
+ len = length(x);
+ r = zeros (1, len);
+ r(1) = x(1);
+ for i = 2:len;
+ r(i) = r(i-1) + x(i);
+ endfor;
+endfunction;
+
diff --git a/gr-utils/octave/single_pole_iir.m b/gr-utils/octave/single_pole_iir.m
new file mode 100644
index 0000000000..12e21f2acf
--- /dev/null
+++ b/gr-utils/octave/single_pole_iir.m
@@ -0,0 +1,25 @@
+#
+# Copyright 2002 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function [b, a] = single_pole_iir (alpha)
+ b = [alpha];
+ a = [1, alpha - 1];
+endfunction \ No newline at end of file
diff --git a/gr-utils/octave/split_vect.m b/gr-utils/octave/split_vect.m
new file mode 100644
index 0000000000..aef5c5c383
--- /dev/null
+++ b/gr-utils/octave/split_vect.m
@@ -0,0 +1,15 @@
+% split vector into packets
+
+function y = split_vect(vect,N)
+ Z = floor(max(size(vect))/N);
+ y = [];
+ if(size(vect)(1)>size(vect)(2))
+ v = vect';
+ else
+ v = vect;
+ end
+ for i=1:Z
+ y(i,1:N) = v((i-1)*N+1:i*N);
+ end
+end
+
diff --git a/gr-utils/octave/write_float_binary.m b/gr-utils/octave/write_float_binary.m
new file mode 100644
index 0000000000..79414878b6
--- /dev/null
+++ b/gr-utils/octave/write_float_binary.m
@@ -0,0 +1,40 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function v = write_float_binary (data, filename)
+
+ ## usage: write_float_binary (data, filename)
+ ##
+ ## open filename and write data to it as 32 bit floats
+ ##
+
+ if ((m = nargchk (2,2,nargin)))
+ usage (m);
+ endif;
+
+ f = fopen (filename, "wb");
+ if (f < 0)
+ v = 0;
+ else
+ v = fwrite (f, data, "float");
+ fclose (f);
+ endif;
+endfunction;
diff --git a/gr-utils/octave/write_short_binary.m b/gr-utils/octave/write_short_binary.m
new file mode 100644
index 0000000000..72b3c408eb
--- /dev/null
+++ b/gr-utils/octave/write_short_binary.m
@@ -0,0 +1,40 @@
+#
+# Copyright 2001 Free Software Foundation, Inc.
+#
+# This file is part of GNU Radio
+#
+# GNU Radio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# GNU Radio is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GNU Radio; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 51 Franklin Street,
+# Boston, MA 02110-1301, USA.
+#
+
+function v = write_short_binary (data, filename)
+
+ ## usage: write_short_binary (data, filename)
+ ##
+ ## open filename and write data to it as 16 bit shorts
+ ##
+
+ if ((m = nargchk (2,2,nargin)))
+ usage (m);
+ endif;
+
+ f = fopen (filename, "wb");
+ if (f < 0)
+ v = 0;
+ else
+ v = fwrite (f, data, "short");
+ fclose (f);
+ endif;
+endfunction;
diff --git a/gr-utils/python/gr_read_file_metadata b/gr-utils/python/gr_read_file_metadata
index 3bc448b04e..4373cd054b 100644
--- a/gr-utils/python/gr_read_file_metadata
+++ b/gr-utils/python/gr_read_file_metadata
@@ -23,7 +23,7 @@
import sys
from optparse import OptionParser
-from gruel import pmt
+import pmt
from gnuradio.blocks import parse_file_metadata
def main(filename, detached=False):
diff --git a/gr-utils/python/modtool/code_generator.py b/gr-utils/python/modtool/code_generator.py
index 525b3d1e9a..fbe9aa92c2 100644
--- a/gr-utils/python/modtool/code_generator.py
+++ b/gr-utils/python/modtool/code_generator.py
@@ -37,6 +37,7 @@ class GRMTemplate(Cheetah.Template.Template):
'decimator': 'gr_sync_decimator',
'interpolator': 'gr_sync_interpolator',
'general': 'gr_block',
+ 'tagged_stream': 'gr_tagged_stream_block',
'hier': 'gr_hier_block2',
'noblock': ''}
searchList['str_to_fancyc_comment'] = str_to_fancyc_comment
diff --git a/gr-utils/python/modtool/gr-newmod/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
index deea791f80..33f67c0442 100644
--- a/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
+++ b/gr-utils/python/modtool/gr-newmod/CMakeLists.txt
@@ -83,16 +83,11 @@ set(GRC_BLOCKS_DIR ${GR_PKG_DATA_DIR}/grc/blocks)
########################################################################
# Find gnuradio build dependencies
########################################################################
-find_package(Gruel)
-find_package(GnuradioCore)
+find_package(GnuradioRuntime)
find_package(CppUnit)
-if(NOT GRUEL_FOUND)
- message(FATAL_ERROR "Gruel required to compile howto")
-endif()
-
-if(NOT GNURADIO_CORE_FOUND)
- message(FATAL_ERROR "GnuRadio Core required to compile howto")
+if(NOT GNURADIO_RUNTIME_FOUND)
+ message(FATAL_ERROR "GnuRadio Runtime required to compile howto")
endif()
if(NOT CPPUNIT_FOUND)
@@ -105,16 +100,14 @@ endif()
include_directories(
${CMAKE_SOURCE_DIR}/include
${Boost_INCLUDE_DIRS}
- ${GRUEL_INCLUDE_DIRS}
${CPPUNIT_INCLUDE_DIRS}
- ${GNURADIO_CORE_INCLUDE_DIRS}
+ ${GNURADIO_RUNTIME_INCLUDE_DIRS}
)
link_directories(
${Boost_LIBRARY_DIRS}
- ${GRUEL_LIBRARY_DIRS}
${CPPUNIT_LIBRARY_DIRS}
- ${GNURADIO_CORE_LIBRARY_DIRS}
+ ${GNURADIO_RUNTIME_LIBRARY_DIRS}
)
# Set component parameters
diff --git a/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake
deleted file mode 100644
index 3773588a70..0000000000
--- a/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioCore.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(PC_GNURADIO_CORE gnuradio-core)
-
-FIND_PATH(
- GNURADIO_CORE_INCLUDE_DIRS
- NAMES gr_random.h
- HINTS $ENV{GNURADIO_CORE_DIR}/include/gnuradio
- ${PC_GNURADIO_CORE_INCLUDEDIR}
- PATHS /usr/local/include/gnuradio
- /usr/include/gnuradio
-)
-
-FIND_LIBRARY(
- GNURADIO_CORE_LIBRARIES
- NAMES gnuradio-core
- HINTS $ENV{GNURADIO_CORE_DIR}/lib
- ${PC_GNURADIO_CORE_LIBDIR}
- PATHS /usr/local/lib
- /usr/local/lib64
- /usr/lib
- /usr/lib64
-)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_CORE DEFAULT_MSG GNURADIO_CORE_LIBRARIES GNURADIO_CORE_INCLUDE_DIRS)
-MARK_AS_ADVANCED(GNURADIO_CORE_LIBRARIES GNURADIO_CORE_INCLUDE_DIRS)
diff --git a/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioRuntime.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioRuntime.cmake
new file mode 100644
index 0000000000..99a4a6d2c0
--- /dev/null
+++ b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGnuradioRuntime.cmake
@@ -0,0 +1,6 @@
+INCLUDE(FindPkgConfig)
+PKG_CHECK_MODULES(GNURADIO_RUNTIME gnuradio-runtime)
+
+INCLUDE(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GNURADIO_RUNTIME DEFAULT_MSG GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS)
+MARK_AS_ADVANCED(GNURADIO_RUNTIME_LIBRARIES GNURADIO_RUNTIME_INCLUDE_DIRS)
diff --git a/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake b/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake
deleted file mode 100644
index 58dff70444..0000000000
--- a/gr-utils/python/modtool/gr-newmod/cmake/Modules/FindGruel.cmake
+++ /dev/null
@@ -1,26 +0,0 @@
-INCLUDE(FindPkgConfig)
-PKG_CHECK_MODULES(PC_GRUEL gruel)
-
-FIND_PATH(
- GRUEL_INCLUDE_DIRS
- NAMES gruel/attributes.h
- HINTS $ENV{GRUEL_DIR}/include
- ${PC_GRUEL_INCLUDEDIR}
- PATHS /usr/local/include
- /usr/include
-)
-
-FIND_LIBRARY(
- GRUEL_LIBRARIES
- NAMES gruel
- HINTS $ENV{GRUEL_DIR}/lib
- ${PC_GRUEL_LIBDIR}
- PATHS /usr/local/lib
- /usr/local/lib64
- /usr/lib
- /usr/lib64
-)
-
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GRUEL DEFAULT_MSG GRUEL_LIBRARIES GRUEL_INCLUDE_DIRS)
-MARK_AS_ADVANCED(GRUEL_LIBRARIES GRUEL_INCLUDE_DIRS)
diff --git a/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in
index cb6a913bbe..71a6bb920b 100644
--- a/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in
+++ b/gr-utils/python/modtool/gr-newmod/docs/doxygen/Doxyfile.in
@@ -679,7 +679,7 @@ INPUT_FILTER =
# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
# is applied to all files.
-FILTER_PATTERNS = *.py=@top_srcdir@/gnuradio-core/doc/other/doxypy.py
+FILTER_PATTERNS = *.py=@top_srcdir@/doc/doxygen/other/doxypy.py
# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
# INPUT_FILTER) will be used to filter the input files when producing source
diff --git a/gr-utils/python/modtool/gr-newmod/include/howto/api.h b/gr-utils/python/modtool/gr-newmod/include/howto/api.h
index 5263a1cf70..0c20712786 100644
--- a/gr-utils/python/modtool/gr-newmod/include/howto/api.h
+++ b/gr-utils/python/modtool/gr-newmod/include/howto/api.h
@@ -22,7 +22,7 @@
#ifndef INCLUDED_HOWTO_API_H
#define INCLUDED_HOWTO_API_H
-#include <gruel/attributes.h>
+#include <attributes.h>
#ifdef gnuradio_howto_EXPORTS
# define HOWTO_API __GR_ATTR_EXPORT
diff --git a/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt
index a9df565cf2..312594149c 100644
--- a/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt
+++ b/gr-utils/python/modtool/gr-newmod/lib/CMakeLists.txt
@@ -29,7 +29,7 @@ list(APPEND howto_sources
)
add_library(gnuradio-howto SHARED ${howto_sources})
-target_link_libraries(gnuradio-howto ${Boost_LIBRARIES} ${GRUEL_LIBRARIES} ${GNURADIO_CORE_LIBRARIES})
+target_link_libraries(gnuradio-howto ${Boost_LIBRARIES} ${GNURADIO_RUNTIME_LIBRARIES})
set_target_properties(gnuradio-howto PROPERTIES DEFINE_SYMBOL "gnuradio_howto_EXPORTS")
########################################################################
@@ -57,7 +57,7 @@ add_executable(test-howto ${test_howto_sources})
target_link_libraries(
test-howto
- ${GNURADIO_CORE_LIBRARIES}
+ ${GNURADIO_RUNTIME_LIBRARIES}
${Boost_LIBRARIES}
${CPPUNIT_LIBRARIES}
gnuradio-howto
diff --git a/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
index 8eff956b61..069afd38ae 100644
--- a/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
+++ b/gr-utils/python/modtool/gr-newmod/lib/qa_howto.h
@@ -23,7 +23,7 @@
#ifndef _QA_HOWTO_H_
#define _QA_HOWTO_H_
-#include <gruel/attributes.h>
+#include <attributes.h>
#include <cppunit/TestSuite.h>
//! collect all the tests for the gr-filter directory
diff --git a/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc b/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc
index bf344265d7..9c5faa0eba 100644
--- a/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc
+++ b/gr-utils/python/modtool/gr-newmod/lib/test_howto.cc
@@ -20,6 +20,10 @@
* Boston, MA 02110-1301, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <cppunit/TextTestRunner.h>
#include <cppunit/XmlOutputter.h>
diff --git a/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
index 1e3e59e2c4..bfcf3d521f 100644
--- a/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
+++ b/gr-utils/python/modtool/gr-newmod/swig/CMakeLists.txt
@@ -31,14 +31,10 @@ include(GrPython)
########################################################################
# Setup swig generation
########################################################################
-foreach(incdir ${GNURADIO_CORE_INCLUDE_DIRS})
+foreach(incdir ${GNURADIO_RUNTIME_INCLUDE_DIRS})
list(APPEND GR_SWIG_INCLUDE_DIRS ${incdir}/swig)
endforeach(incdir)
-foreach(incdir ${GRUEL_INCLUDE_DIRS})
- list(APPEND GR_SWIG_INCLUDE_DIRS ${incdir}/gruel/swig)
-endforeach(incdir)
-
set(GR_SWIG_LIBRARIES gnuradio-howto)
set(GR_SWIG_DOC_FILE ${CMAKE_CURRENT_BINARY_DIR}/howto_swig_doc.i)
set(GR_SWIG_DOC_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../include)
diff --git a/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i b/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i
index 4627d48d34..1946fb47a8 100644
--- a/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i
+++ b/gr-utils/python/modtool/gr-newmod/swig/howto_swig.i
@@ -2,7 +2,7 @@
#define HOWTO_API
-%include "gnuradio.i" // the common stuff
+%include "runtime_swig.i" // the common stuff
//load generated python docstrings
%include "howto_swig_doc.i"
diff --git a/gr-utils/python/modtool/modtool_add.py b/gr-utils/python/modtool/modtool_add.py
index e1d61cf0fb..81103e460d 100644
--- a/gr-utils/python/modtool/modtool_add.py
+++ b/gr-utils/python/modtool/modtool_add.py
@@ -37,7 +37,7 @@ class ModToolAdd(ModTool):
name = 'add'
aliases = ('insert',)
_block_types = ('sink', 'source', 'sync', 'decimator', 'interpolator',
- 'general', 'hier', 'noblock')
+ 'general', 'tagged_stream', 'hier', 'noblock')
def __init__(self):
ModTool.__init__(self)
self._add_cc_qa = False
@@ -208,7 +208,7 @@ class ModToolAdd(ModTool):
fname_h = self._info['blockname'] + '.h'
fname_cc = self._info['blockname'] + '.cc'
if self._info['blocktype'] in ('source', 'sink', 'sync', 'decimator',
- 'interpolator', 'general', 'hier'):
+ 'interpolator', 'general', 'hier', 'tagged_stream'):
fname_cc = self._info['blockname'] + '_impl.cc'
self._write_tpl('block_impl_h', 'lib', self._info['blockname'] + '_impl.h')
self._write_tpl('block_impl_cpp', 'lib', fname_cc)
diff --git a/gr-utils/python/modtool/modtool_base.py b/gr-utils/python/modtool/modtool_base.py
index 3f8f2bc3c7..a03334bedc 100644
--- a/gr-utils/python/modtool/modtool_base.py
+++ b/gr-utils/python/modtool/modtool_base.py
@@ -131,7 +131,7 @@ class ModTool(object):
return False
for f in files:
if os.path.isfile(f) and f == 'CMakeLists.txt':
- if re.search('find_package\(GnuradioCore\)', open(f).read()) is not None:
+ if re.search('find_package\(GnuradioRuntime\)', open(f).read()) is not None:
self._info['version'] = '36' # Might be 37, check that later
has_makefile = True
elif re.search('GR_REGISTER_COMPONENT', open(f).read()) is not None:
diff --git a/gr-utils/python/modtool/modtool_info.py b/gr-utils/python/modtool/modtool_info.py
index 680bd41b99..0f0f66f3fd 100644
--- a/gr-utils/python/modtool/modtool_info.py
+++ b/gr-utils/python/modtool/modtool_info.py
@@ -127,10 +127,8 @@ class ModToolInfo(ModTool):
try:
cmakecache_fid = open(os.path.join(mod_info['build_dir'], 'CMakeCache.txt'))
for line in cmakecache_fid:
- if line.find('GNURADIO_CORE_INCLUDE_DIRS:%s' % path_or_internal) != -1:
- inc_dirs += line.replace('GNURADIO_CORE_INCLUDE_DIRS:%s=' % path_or_internal, '').strip().split(';')
- if line.find('GRUEL_INCLUDE_DIRS:%s' % path_or_internal) != -1:
- inc_dirs += line.replace('GRUEL_INCLUDE_DIRS:%s=' % path_or_internal, '').strip().split(';')
+ if line.find('GNURADIO_RUNTIME_INCLUDE_DIRS:%s' % path_or_internal) != -1:
+ inc_dirs += line.replace('GNURADIO_RUNTIME_INCLUDE_DIRS:%s=' % path_or_internal, '').strip().split(';')
except IOError:
pass
if len(inc_dirs) == 0 and self.options.suggested_dirs is not None:
diff --git a/gr-utils/python/modtool/templates.py b/gr-utils/python/modtool/templates.py
index 706017cc21..4f4469951c 100644
--- a/gr-utils/python/modtool/templates.py
+++ b/gr-utils/python/modtool/templates.py
@@ -57,25 +57,34 @@ namespace gr {
class ${blockname}_impl : public ${blockname}
{
- private:
+ private:
// Nothing to declare in this block.
- public:
+#if $blocktype == 'tagged_stream'
+ protected:
+ int calculate_output_stream_length(const gr_vector_int &ninput_items);
+
+#end if
+ public:
${blockname}_impl(${strip_default_values($arglist)});
~${blockname}_impl();
+ // Where all the action really happens
#if $blocktype == 'general'
void forecast (int noutput_items, gr_vector_int &ninput_items_required);
- // Where all the action really happens
int general_work(int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
+#else if $blocktype == 'tagged_stream'
+ int work(int noutput_items,
+ gr_vector_int &ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items);
#else if $blocktype == 'hier'
#silent pass
#else
- // Where all the action really happens
int work(int noutput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items);
@@ -125,6 +134,8 @@ namespace gr {
#set $decimation = ', <+decimation+>'
#else if $blocktype == 'interpolator'
#set $decimation = ', <+interpolation+>'
+#else if $blocktype == 'tagged_stream'
+#set $decimation = ', <+len_tag_key+>'
#else
#set $decimation = ''
#end if
@@ -186,6 +197,28 @@ namespace gr {
// Tell runtime system how many output items we produced.
return noutput_items;
}
+#else if $blocktype == 'tagged_stream'
+ int
+ ${blockname}_impl::calculate_output_stream_length(const gr_vector_int &ninput_items)
+ {
+ int noutput_items = /* <+set this+> */;
+ return noutput_items ;
+ }
+
+ int
+ ${blockname}_impl::work (int noutput_items,
+ gr_vector_int &ninput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
+ {
+ const float *in = (const float *) input_items[0];
+ float *out = (float *) output_items[0];
+
+ // Do <+signal processing+>
+
+ // Tell runtime system how many output items we produced.
+ return noutput_items;
+ }
#else if $blocktype == 'hier'
#silent pass
#else
@@ -230,9 +263,9 @@ namespace gr {
*/
class ${modname.upper()}_API $blockname
{
- ${blockname}(${arglist});
- ~${blockname}();
- private:
+ ${blockname}(${arglist});
+ ~${blockname}();
+ private:
};
#else
/*!
@@ -242,18 +275,18 @@ namespace gr {
*/
class ${modname.upper()}_API ${blockname} : virtual public $grblocktype
{
- public:
- typedef boost::shared_ptr<${blockname}> sptr;
-
- /*!
- * \\brief Return a shared_ptr to a new instance of ${modname}::${blockname}.
- *
- * To avoid accidental use of raw pointers, ${modname}::${blockname}'s
- * constructor is in a private implementation
- * class. ${modname}::${blockname}::make is the public interface for
- * creating new instances.
- */
- static sptr make($arglist);
+ public:
+ typedef boost::shared_ptr<${blockname}> sptr;
+
+ /*!
+ * \\brief Return a shared_ptr to a new instance of ${modname}::${blockname}.
+ *
+ * To avoid accidental use of raw pointers, ${modname}::${blockname}'s
+ * constructor is in a private implementation
+ * class. ${modname}::${blockname}::make is the public interface for
+ * creating new instances.
+ */
+ static sptr make($arglist);
};
#end if
@@ -275,7 +308,7 @@ ${str_to_python_comment($license)}
#if $blocktype in ('sync', 'sink', 'source')
#set $parenttype = 'gr.sync_block'
#else
-#set $parenttype = {'hier': 'gr.hier_block2', 'interpolator': 'gr.interp_block', 'decimator': 'gr.decim_block', 'general': 'gr.block'}[$blocktype]
+#set $parenttype = {'hier': 'gr.hier_block2', 'interpolator': 'gr.interp_block', 'decimator': 'gr.decim_block', 'general': 'gr.basic_block'}[$blocktype]
#end if
#if $blocktype != 'hier'
import numpy
@@ -338,7 +371,7 @@ class ${blockname}(${parenttype}):
def general_work(self, input_items, output_items):
output_items[0][:] = input_items[0]
- consume(0, len(input_items[0])
+ consume(0, len(input_items[0]))
\#self.consume_each(len(input_items[0]))
return len(output_items[0])
#stop
@@ -473,7 +506,7 @@ Templates['grc_xml'] = '''<?xml version="1.0"?>
* optional (set to 1 for optional inputs) -->
<sink>
<name>in</name>
- <type><!-- e.g. int, real, complex, byte, short, xxx_vector, ...--></type>
+ <type><!-- e.g. int, float, complex, byte, short, xxx_vector, ...--></type>
</sink>
<!-- Make one 'source' node per output. Sub-nodes:
@@ -483,7 +516,7 @@ Templates['grc_xml'] = '''<?xml version="1.0"?>
* optional (set to 1 for optional inputs) -->
<source>
<name>out</name>
- <type><!-- e.g. int, real, complex, byte, short, xxx_vector, ...--></type>
+ <type><!-- e.g. int, float, complex, byte, short, xxx_vector, ...--></type>
</source>
</block>
'''