summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gr-digital/lib/lms_dd_equalizer_cc_impl.cc6
-rw-r--r--gr-digital/lib/ofdm_equalizer_simpledfe.cc6
2 files changed, 12 insertions, 0 deletions
diff --git a/gr-digital/lib/lms_dd_equalizer_cc_impl.cc b/gr-digital/lib/lms_dd_equalizer_cc_impl.cc
index 530b3aa6fd..296d8feb13 100644
--- a/gr-digital/lib/lms_dd_equalizer_cc_impl.cc
+++ b/gr-digital/lib/lms_dd_equalizer_cc_impl.cc
@@ -86,6 +86,12 @@ namespace gr {
lms_dd_equalizer_cc_impl::error(const gr_complex &out)
{
gr_complex decision, error;
+ // The `map_to_points` function will treat `decision` as an array pointer.
+ // This call is "safe" because `map_to_points` is limited by the
+ // dimensionality of the constellation. This class calls the
+ // `constellation` class default constructor, which initializes the
+ // dimensionality value to `1`. Thus, Only the single `gr_complex` value
+ // will be dereferenced.
d_cnst->map_to_points(d_cnst->decision_maker(&out), &decision);
error = decision - out;
return error;
diff --git a/gr-digital/lib/ofdm_equalizer_simpledfe.cc b/gr-digital/lib/ofdm_equalizer_simpledfe.cc
index 9e1ac4e349..f618ba5657 100644
--- a/gr-digital/lib/ofdm_equalizer_simpledfe.cc
+++ b/gr-digital/lib/ofdm_equalizer_simpledfe.cc
@@ -96,6 +96,12 @@ namespace gr {
frame[i*d_fft_len+k] = d_pilot_symbols[d_pilot_carr_set][k];
} else {
sym_eq = frame[i*d_fft_len+k] / d_channel_state[k];
+ // The `map_to_points` function will treat `sym_est` as an array
+ // pointer. This call is "safe" because `map_to_points` is limited
+ // by the dimensionality of the constellation. This class calls the
+ // `constellation` class default constructor, which initializes the
+ // dimensionality value to `1`. Thus, Only the single `gr_complex`
+ // value will be dereferenced.
d_constellation->map_to_points(d_constellation->decision_maker(&sym_eq), &sym_est);
d_channel_state[k] = d_alpha * d_channel_state[k]
+ (1-d_alpha) * frame[i*d_fft_len + k] / sym_est;