diff --git a/csdr.c b/csdr.c
index 61a3312..fb5aaf3 100644
--- a/csdr.c
+++ b/csdr.c
@@ -444,7 +444,6 @@ int main(int argc, char *argv[])
{
FEOF_CHECK;
if(!FREAD_C) break;
- starting_phase=shift_math_cc((complexf*)input_buffer, (complexf*)output_buffer, the_bufsize, rate, starting_phase);
FWRITE_C;
TRY_YIELD;
}
@@ -1532,6 +1531,7 @@ int main(int argc, char *argv[])
TRY_YIELD;
}
}
+
if(!strcmp(argv[1],"dsb_fc"))
{
if(!sendbufsize(initialize_buffers())) return -2;
@@ -1549,6 +1549,19 @@ int main(int argc, char *argv[])
}
}
+ if(!strcmp(argv[1],"add_dcoffset_cc"))
+ {
+ if(!sendbufsize(initialize_buffers())) return -2;
+ for(;;)
+ {
+ FEOF_CHECK;
+ FREAD_R;
+ add_dcoffset_cc((complexf*)input_buffer, (complexf*)output_buffer, the_bufsize);
+ FWRITE_C;
+ TRY_YIELD;
+ }
+ }
+
if(!strcmp(argv[1],"none"))
{
return 0;
diff --git a/grc_tests/test_ammod.grc b/grc_tests/test_ammod.grc
new file mode 100644
index 0000000..ffd6fb7
--- /dev/null
+++ b/grc_tests/test_ammod.grc
@@ -0,0 +1,952 @@
+
+
+
+ Sat Oct 31 16:20:03 2015
+
+ options
+
+ id
+ top_block
+
+
+ _enabled
+ True
+
+
+ title
+
+
+
+ author
+
+
+
+ description
+
+
+
+ window_size
+ 1280, 1024
+
+
+ generate_options
+ wx_gui
+
+
+ category
+ Custom
+
+
+ run_options
+ prompt
+
+
+ run
+ True
+
+
+ max_nouts
+ 0
+
+
+ realtime_scheduling
+
+
+
+ alias
+
+
+
+ _coordinate
+ (10, 10)
+
+
+ _rotation
+ 0
+
+
+
+ variable
+
+ id
+ samp_rate
+
+
+ _enabled
+ True
+
+
+ value
+ 32000
+
+
+ alias
+
+
+
+ _coordinate
+ (176, 11)
+
+
+ _rotation
+ 0
+
+
+
+ notebook
+
+ id
+ nb0
+
+
+ _enabled
+ True
+
+
+ style
+ wx.NB_TOP
+
+
+ labels
+ ['Scope', 'FFT']
+
+
+ grid_pos
+
+
+
+ notebook
+
+
+
+ alias
+
+
+
+ _coordinate
+ (272, 11)
+
+
+ _rotation
+ 0
+
+
+
+ notebook
+
+ id
+ nb1
+
+
+ _enabled
+ True
+
+
+ style
+ wx.NB_TOP
+
+
+ labels
+ ['Scope', 'FFT']
+
+
+ grid_pos
+
+
+
+ notebook
+
+
+
+ alias
+
+
+
+ _coordinate
+ (272, 99)
+
+
+ _rotation
+ 0
+
+
+
+ variable_slider
+
+ id
+ freq
+
+
+ _enabled
+ True
+
+
+ label
+
+
+
+ value
+ 1000
+
+
+ min
+ 0
+
+
+ max
+ samp_rate/2
+
+
+ num_steps
+ 100
+
+
+ style
+ wx.SL_HORIZONTAL
+
+
+ converver
+ float_converter
+
+
+ grid_pos
+
+
+
+ notebook
+
+
+
+ alias
+
+
+
+ _coordinate
+ (424, 11)
+
+
+ _rotation
+ 0
+
+
+
+ blocks_deinterleave
+
+ id
+ blocks_deinterleave_0
+
+
+ _enabled
+ True
+
+
+ type
+ float
+
+
+ num_streams
+ 2
+
+
+ blocksize
+ 1
+
+
+ vlen
+ 1
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ minoutbuf
+ 0
+
+
+ maxoutbuf
+ 0
+
+
+ _coordinate
+ (584, 376)
+
+
+ _rotation
+ 0
+
+
+
+ blocks_throttle
+
+ id
+ blocks_throttle_0
+
+
+ _enabled
+ True
+
+
+ type
+ float
+
+
+ samples_per_second
+ samp_rate
+
+
+ vlen
+ 1
+
+
+ ignoretag
+ True
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ minoutbuf
+ 0
+
+
+ maxoutbuf
+ 0
+
+
+ _coordinate
+ (176, 195)
+
+
+ _rotation
+ 0
+
+
+
+ wxgui_scopesink2
+
+ id
+ wxgui_scopesink2_0
+
+
+ _enabled
+ True
+
+
+ type
+ float
+
+
+ title
+ Scope Plot of Original Signal
+
+
+ samp_rate
+ samp_rate
+
+
+ v_scale
+ 0
+
+
+ v_offset
+ 0
+
+
+ t_scale
+ 0
+
+
+ ac_couple
+ False
+
+
+ xy_mode
+ False
+
+
+ num_inputs
+ 1
+
+
+ win_size
+
+
+
+ grid_pos
+
+
+
+ notebook
+ nb0,0
+
+
+ trig_mode
+ wxgui.TRIG_MODE_AUTO
+
+
+ y_axis_label
+ Counts
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ _coordinate
+ (352, 331)
+
+
+ _rotation
+ 0
+
+
+
+ analog_sig_source_x
+
+ id
+ analog_sig_source_x_0
+
+
+ _enabled
+ True
+
+
+ type
+ float
+
+
+ samp_rate
+ samp_rate
+
+
+ waveform
+ analog.GR_COS_WAVE
+
+
+ freq
+ freq
+
+
+ amp
+ amp
+
+
+ offset
+ 0
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ minoutbuf
+ 0
+
+
+ maxoutbuf
+ 0
+
+
+ _coordinate
+ (8, 163)
+
+
+ _rotation
+ 0
+
+
+
+ wxgui_fftsink2
+
+ id
+ wxgui_fftsink2_0
+
+
+ _enabled
+ True
+
+
+ type
+ float
+
+
+ title
+ FFT Plot of Original Signal
+
+
+ samp_rate
+ samp_rate
+
+
+ baseband_freq
+ 0
+
+
+ y_per_div
+ 10
+
+
+ y_divs
+ 10
+
+
+ ref_level
+ 0
+
+
+ ref_scale
+ 2.0
+
+
+ fft_size
+ 1024
+
+
+ fft_rate
+ 15
+
+
+ peak_hold
+ False
+
+
+ average
+ False
+
+
+ avg_alpha
+ 0
+
+
+ win
+ None
+
+
+ win_size
+
+
+
+ grid_pos
+
+
+
+ notebook
+ nb0,1
+
+
+ freqvar
+ None
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ _coordinate
+ (352, 459)
+
+
+ _rotation
+ 0
+
+
+
+ wxgui_scopesink2
+
+ id
+ wxgui_scopesink2_0_0
+
+
+ _enabled
+ True
+
+
+ type
+ complex
+
+
+ title
+ Scope Plot of Processed Signal (csdr)
+
+
+ samp_rate
+ samp_rate
+
+
+ v_scale
+ 0
+
+
+ v_offset
+ 0
+
+
+ t_scale
+ 0
+
+
+ ac_couple
+ False
+
+
+ xy_mode
+ False
+
+
+ num_inputs
+ 1
+
+
+ win_size
+
+
+
+ grid_pos
+
+
+
+ notebook
+ nb1,0
+
+
+ trig_mode
+ wxgui.TRIG_MODE_AUTO
+
+
+ y_axis_label
+ Counts
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ _coordinate
+ (944, 171)
+
+
+ _rotation
+ 0
+
+
+
+ blocks_float_to_complex
+
+ id
+ blocks_float_to_complex_0
+
+
+ _enabled
+ True
+
+
+ vlen
+ 1
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ minoutbuf
+ 0
+
+
+ maxoutbuf
+ 0
+
+
+ _coordinate
+ (728, 376)
+
+
+ _rotation
+ 0
+
+
+
+ wxgui_fftsink2
+
+ id
+ wxgui_fftsink2_0_0
+
+
+ _enabled
+ True
+
+
+ type
+ complex
+
+
+ title
+ FFT Plot of Processed Signal (csdr)
+
+
+ samp_rate
+ samp_rate
+
+
+ baseband_freq
+ 0
+
+
+ y_per_div
+ 10
+
+
+ y_divs
+ 10
+
+
+ ref_level
+ 0
+
+
+ ref_scale
+ 2.0
+
+
+ fft_size
+ 1024
+
+
+ fft_rate
+ 15
+
+
+ peak_hold
+ False
+
+
+ average
+ False
+
+
+ avg_alpha
+ 0
+
+
+ win
+ None
+
+
+ win_size
+
+
+
+ grid_pos
+
+
+
+ notebook
+ nb1,1
+
+
+ freqvar
+ None
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ _coordinate
+ (952, 371)
+
+
+ _rotation
+ 0
+
+
+
+ ha5kfu_execproc_xx
+
+ id
+ ha5kfu_execproc_xx_0
+
+
+ _enabled
+ True
+
+
+ type
+ ff
+
+
+ commandline
+ csdr dsb_fc | csdr add_dcoffset_cc
+
+
+ alias
+
+
+
+ affinity
+
+
+
+ minoutbuf
+ 0
+
+
+ maxoutbuf
+ 0
+
+
+ _coordinate
+ (448, 195)
+
+
+ _rotation
+ 0
+
+
+
+ variable_slider
+
+ id
+ amp
+
+
+ _enabled
+ True
+
+
+ label
+
+
+
+ value
+ 0.5
+
+
+ min
+ 0
+
+
+ max
+ 10
+
+
+ num_steps
+ 100
+
+
+ style
+ wx.SL_HORIZONTAL
+
+
+ converver
+ float_converter
+
+
+ grid_pos
+
+
+
+ notebook
+
+
+
+ alias
+
+
+
+ _coordinate
+ (544, 11)
+
+
+ _rotation
+ 0
+
+
+
+ analog_sig_source_x_0
+ blocks_throttle_0
+ 0
+ 0
+
+
+ blocks_throttle_0
+ ha5kfu_execproc_xx_0
+ 0
+ 0
+
+
+ blocks_throttle_0
+ wxgui_scopesink2_0
+ 0
+ 0
+
+
+ blocks_throttle_0
+ wxgui_fftsink2_0
+ 0
+ 0
+
+
+ ha5kfu_execproc_xx_0
+ blocks_deinterleave_0
+ 0
+ 0
+
+
+ blocks_deinterleave_0
+ blocks_float_to_complex_0
+ 0
+ 0
+
+
+ blocks_deinterleave_0
+ blocks_float_to_complex_0
+ 1
+ 1
+
+
+ blocks_float_to_complex_0
+ wxgui_scopesink2_0_0
+ 0
+ 0
+
+
+ blocks_float_to_complex_0
+ wxgui_fftsink2_0_0
+ 0
+ 0
+
+
diff --git a/libcsdr.c b/libcsdr.c
index 5922020..2317856 100644
--- a/libcsdr.c
+++ b/libcsdr.c
@@ -818,6 +818,21 @@ void gain_ff(float* input, float* output, int input_size, float gain)
for(int i=0;i