Ofdm_chanest_vcvc_impl.cc

Hi all:
Thank you in advance.I have read the source
code:ofdm_chanest_vcvc_impl.cc.But i have a question.

void
ofdm_chanest_vcvc_impl::get_chan_taps(
const gr_complex *sync_sym1,
const gr_complex *sync_sym2,
int carr_offset,
std::vector<gr_complex> &taps)
{
  const gr_complex *sym = ((d_n_sync_syms == 2) ? sync_sym2 : 

sync_sym1);
std::fill(taps.begin(), taps.end(), gr_complex(0, 0));
int loop_start = 0;
int loop_end = d_fft_len;
if (carr_offset > 0) {
loop_start = carr_offset;
} else if (carr_offset < 0) {
loop_end = d_fft_len + carr_offset;
}

  for (int i = loop_start; i < loop_end; i++) {
if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
  taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
}
  }

//Question:
//For example,when the carr_offset=2,then:
//loop_start =2;
//for example loop_end=64
// for (int i =2; i < loop_end; i++) {
if ((d_ref_sym[i-carr_offset] != gr_complex(0, 0))) {
taps[i-carr_offset] = sym[i] / d_ref_sym[i-carr_offset];
}
}
//
Now the taps only have values on taps[0]—taps[63-2],and taps[62]
taps[63] will be equal to zero.It means that the channel estimation have
value 0.It is wrong?

  if (d_interpolate) {
for (int i = d_first_active_carrier + 1; i < d_last_active_carrier; 

i += 2) {
taps[i] = taps[i-1];
}
taps[d_last_active_carrier] = taps[d_last_active_carrier-1];
}

  if (d_eq_noise_red_len) {
// TODO
// 1) IFFT
// 2) Set all elements > d_eq_noise_red_len to zero
// 3) FFT
  }
}
        Thank you.

Best regards,
zswx