Imported Upstream version 3.0.3
[debian/gnuradio] / gnuradio-core / src / lib / io / gr_oscope_guts.cc
index 2a152b95a20d402d2279234faeb1a0ee3dfdffa9..286a7d1fb9abec1793801bd837184384df46c7b4 100644 (file)
@@ -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;
   }