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)
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 ()
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;
}