summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnuradio-core/src/lib/io/gr_oscope_guts.cc16
1 files changed, 10 insertions, 6 deletions
diff --git a/gnuradio-core/src/lib/io/gr_oscope_guts.cc b/gnuradio-core/src/lib/io/gr_oscope_guts.cc
index 2a152b95a..286a7d1fb 100644
--- a/gnuradio-core/src/lib/io/gr_oscope_guts.cc
+++ b/gnuradio-core/src/lib/io/gr_oscope_guts.cc
@@ -60,11 +60,11 @@ gr_oscope_guts::gr_oscope_guts (int nchannels, double sample_rate, gr_msg_queue_
d_update_rate (20),
d_trigger_level (0),
d_obi (0),
- d_state (LOOK_FOR_TRIGGER),
+ d_state (HOLD_OFF),
d_decimator_count (0),
d_decimator_count_init (1),
d_hold_off_count (0),
- d_hold_off_count_init (0),
+ d_hold_off_count_init (OUTPUT_RECORD_SIZE/2-1),
d_post_trigger_count (0),
d_post_trigger_count_init (OUTPUT_RECORD_SIZE/2),
d_prev_sample (0)
@@ -77,11 +77,15 @@ gr_oscope_guts::gr_oscope_guts (int nchannels, double sample_rate, gr_msg_queue_
for (int i = 0; i < MAX_CHANNELS; i++)
d_buffer[i] = 0;
- for (int i = 0; i < d_nchannels; i++)
+ for (int i = 0; i < d_nchannels; i++){
d_buffer[i] = new float [OUTPUT_RECORD_SIZE];
+ for (int j = 0; j < OUTPUT_RECORD_SIZE; j++)
+ d_buffer[i][j] = 0.0;
+ }
+ // be sure buffer is full before first write
+ enter_hold_off ();
update_rate_or_decimation_changed ();
- enter_look_for_trigger ();
}
gr_oscope_guts::~gr_oscope_guts ()
@@ -228,9 +232,9 @@ gr_oscope_guts::write_output_records ()
float *out = (float *)msg->msg(); // get pointer to raw message buffer
for (int ch = 0; ch < d_nchannels; ch++){
- // note that d_obi points at the oldest sample in the buffer
+ // note that d_obi + 1 points at the oldest sample in the buffer
for (int i = 0; i < OUTPUT_RECORD_SIZE; i++)
- out[i] = d_buffer[ch][wrap_bi(d_obi + i)];
+ out[i] = d_buffer[ch][wrap_bi(d_obi + 1 + i)];
out += OUTPUT_RECORD_SIZE;
}