summaryrefslogtreecommitdiff
path: root/cesar/ce
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/ce')
-rw-r--r--cesar/ce/rx/bitloading/inc/ber.h15
-rw-r--r--cesar/ce/rx/bitloading/inc/bitloading.h2
-rw-r--r--cesar/ce/rx/bitloading/src/ber.c146
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c6
-rw-r--r--cesar/ce/rx/bitloading/src/import_poly_coeff.pl88
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_bl.c15
-rw-r--r--cesar/ce/rx/bitloading/test/src/test_poly.c89
7 files changed, 142 insertions, 219 deletions
diff --git a/cesar/ce/rx/bitloading/inc/ber.h b/cesar/ce/rx/bitloading/inc/ber.h
index 3e0e4a883e..0345d5dcfc 100644
--- a/cesar/ce/rx/bitloading/inc/ber.h
+++ b/cesar/ce/rx/bitloading/inc/ber.h
@@ -80,7 +80,7 @@ typedef struct ce_rx_bl_ber_poly_coef_t ce_rx_bl_ber_poly_coef_t;
* They work for NSR based on sound and data.
*/
extern ce_rx_bl_ber_poly_coef_t
-ce_rx_bl_ber_poly_coef[PHY_FEC_RATE_NB][CE_MOD_COUNT - 1];
+ce_rx_bl_ber_poly_coef[CE_MOD_COUNT - 1];
/**
* Initial value of the bit per tone goal to reach for the bit loading
@@ -104,17 +104,17 @@ BEGIN_DECLS
* \return the computed BER for this modulation and current NSR.
*/
u64
-ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u8 mod_index);
+ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t poly[CE_MOD_COUNT - 1],
+ u32 nsr, u8 mod_index);
/**
* Compute the theoretical BER from a NSR (sound based) and a modulation.
* \param nsr the current NSR.
* \param mod_index the index of the modulation.
- * \param fec_rate the FEC rate to use (it changes the polynomials to use).
* \return the computed BER for this modulation and current NSR.
*/
-#define ce_rx_bl_ber_for_mod_initial(nsr, mod_index, fec_rate) \
- ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef[(fec_rate)], (nsr), (mod_index))
+#define ce_rx_bl_ber_for_mod_initial(nsr, mod_index) \
+ ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef, (nsr), (mod_index))
/**
* Get modulations around a corresponding to a BER consign based on a NSR.
@@ -129,8 +129,9 @@ ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u8 mod_index);
* respect a given BER consign for a specific NSR.
*/
void
-ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u64 ber_pt,
- u8 *mod_lower, u64 *ber_lower, u64 *ber_upper);
+ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef_t poly[CE_MOD_COUNT - 1], u32 nsr,
+ u64 ber_pt, u8 *mod_lower, u64 *ber_lower,
+ u64 *ber_upper);
/**
* Compute the BER pt to reach according to the FEC rate, the number of used
diff --git a/cesar/ce/rx/bitloading/inc/bitloading.h b/cesar/ce/rx/bitloading/inc/bitloading.h
index b57269a333..e9922a55e1 100644
--- a/cesar/ce/rx/bitloading/inc/bitloading.h
+++ b/cesar/ce/rx/bitloading/inc/bitloading.h
@@ -91,7 +91,6 @@ ce_rx_bl_sort_optimization (ce_rx_bl_ber_impact_t *opti_table, uint size);
* Set a tone map under a BER consign.
* \param ber_pt BER consign to respect.
* \param tonemask the tone mask context.
- * \param fec_rate the FEC rate to use (for the polynomial).
* \param bl the bit loading context.
* \param tm tone map initial generated (non-optimized version).
* \param opti_table the optimization table (required to optimize the tone
@@ -111,7 +110,6 @@ ce_rx_bl_sort_optimization (ce_rx_bl_ber_impact_t *opti_table, uint size);
u64
ce_rx_bl_update_tone_map_under_ber_consign (u64 ber_pt,
tonemask_info_t *tonemask,
- phy_fecrate_t fec_rate,
ce_rx_bitloading_t *bl,
tonemap_t *tm,
ce_rx_bl_ber_impact_t *opti_table,
diff --git a/cesar/ce/rx/bitloading/src/ber.c b/cesar/ce/rx/bitloading/src/ber.c
index 92e07db80a..e92abf95af 100644
--- a/cesar/ce/rx/bitloading/src/ber.c
+++ b/cesar/ce/rx/bitloading/src/ber.c
@@ -30,123 +30,63 @@ s64 ce_rx_bl_ber_margin_[] = { 0ll, 0ll };
* http://stestephe/svn/spidcom_digital_svn/projects/DSP_350/DSP_chain/SW/Bit_Loading/BER_vs_NSR/Polynomes_BERinq_vs_NSRq_normalises.m
* Revision: 18241.
*/
-ce_rx_bl_ber_poly_coef_t ce_rx_bl_ber_poly_coef[PHY_FEC_RATE_NB][CE_MOD_COUNT - 1] =
+ce_rx_bl_ber_poly_coef_t ce_rx_bl_ber_poly_coef[CE_MOD_COUNT - 1] =
{
{
+ 1,
+ { 3 },
{
- 1,
- { 3 },
- {
- { 2ll, -614142ll, 69770329856ll, -362383471042474ll },
- },
- { 5461, 131070 },
- },
- {
- 1,
- { 3 },
- {
- { 21ll, -3182001ll, 154673115663ll, -388385849742766ll },
- },
- { 2654, 35212 },
- },
- {
- 1,
- { 3 },
- {
- { 445ll, -19298713ll, 343639234529ll, -279649449376397ll },
- },
- { 854, 29538 },
- },
- {
- 1,
- { 3 },
- {
- { 2204ll, -55355989ll, 564885755970ll, -264069612527883ll },
- },
- { 491, 17534 },
- },
- {
- 1,
- { 4 },
- {
- { -10ll, 134707ll, -659991499ll, 1736969891776ll, -177145201462823ll },
- },
- { 107, 4225 },
- },
- {
- 2,
- { 5, 2 },
- {
- { 1ll, -3453ll, 7709283ll, -8478165747ll, 5556178345777ll, -134510842708508ll }, { -364008233ll, 1538554532136ll, 694716911324961ll },
- },
- { 26, 716, 2000 },
- },
- {
- 3,
- { 5, 5, 2 },
- {
- { -2176940ll, 501510782ll, -42003152968ll, 1463943172712ll, -5749724784237ll, 7848129503347ll }, { 2ll, -8614ll, 15590615ll, -14246266067ll, 7477723391941ll, 320248474620364ll }, { -187676521ll, 983964789862ll, 1638081773113356ll },
- },
- { 2, 80, 800, 1200 },
+ { 2ll, -614142ll, 69770329856ll, -362383471042474ll },
},
+ { 5461, 131070 },
},
{
+ 1,
+ { 3 },
{
- 1,
- { 3 },
- {
- { 2ll, -614142ll, 69770329856ll, -362383471042474ll },
- },
- { 5461, 131070 },
- },
- {
- 1,
- { 3 },
- {
- { 21ll, -3182001ll, 154673115663ll, -388385849742766ll },
- },
- { 2654, 35212 },
+ { 21ll, -3182001ll, 154673115663ll, -388385849742766ll },
},
+ { 2654, 35212 },
+ },
+ {
+ 1,
+ { 3 },
{
- 1,
- { 3 },
- {
- { 445ll, -19298713ll, 343639234529ll, -279649449376397ll },
- },
- { 854, 29538 },
+ { 445ll, -19298713ll, 343639234529ll, -279649449376397ll },
},
+ { 854, 29538 },
+ },
+ {
+ 1,
+ { 3 },
{
- 1,
- { 3 },
- {
- { 2204ll, -55355989ll, 564885755970ll, -264069612527883ll },
- },
- { 491, 17534 },
+ { 2204ll, -55355989ll, 564885755970ll, -264069612527883ll },
},
+ { 491, 17534 },
+ },
+ {
+ 1,
+ { 4 },
{
- 1,
- { 4 },
- {
- { -10ll, 134707ll, -659991499ll, 1736969891776ll, -177145201462823ll },
- },
- { 107, 4225 },
+ { -10ll, 134707ll, -659991499ll, 1736969891776ll, -177145201462823ll },
},
+ { 107, 4225 },
+ },
+ {
+ 2,
+ { 5, 2 },
{
- 2,
- { 5, 2 },
- {
- { 1ll, -3453ll, 7709283ll, -8478165747ll, 5556178345777ll, -134510842708508ll }, { -364008233ll, 1538554532136ll, 694716911324961ll },
- },
- { 26, 716, 2000 },
+ { 1ll, -3453ll, 7709283ll, -8478165747ll, 5556178345777ll, -134510842708508ll }, { -364008233ll, 1538554532136ll, 694716911324961ll },
},
+ { 26, 716, 2000 },
+ },
+ {
+ 3,
+ { 5, 5, 2 },
{
- 3,
- { 5, 5, 2 },
- {
- { -2176940ll, 501510782ll, -42003152968ll, 1463943172712ll, -5749724784237ll, 7848129503347ll }, { 2ll, -8614ll, 15590615ll, -14246266067ll, 7477723391941ll, 320248474620364ll }, { -187676521ll, 983964789862ll, 1638081773113356ll },
- },
- { 2, 80, 800, 1200 },
+ { -2176940ll, 501510782ll, -42003152968ll, 1463943172712ll, -5749724784237ll, 7848129503347ll }, { 2ll, -8614ll, 15590615ll, -14246266067ll, 7477723391941ll, 320248474620364ll }, { -187676521ll, 983964789862ll, 1638081773113356ll },
},
+ { 2, 80, 800, 1200 },
},
};
@@ -194,7 +134,8 @@ const u64 ce_rx_bl_initial_bpt[PHY_FEC_RATE_NB] = {
};
u64
-ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u8 mod_index)
+ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t poly[CE_MOD_COUNT - 1],
+ u32 nsr, u8 mod_index)
{
/* Check parameters. */
dbg_assert (poly);
@@ -217,8 +158,9 @@ ce_rx_bl_ber_for_mod (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u8 mod_index)
}
void
-ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef_t *poly, u32 nsr, u64 ber_pt,
- u8 *mod_lower, u64 *ber_lower, u64 *ber_upper)
+ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef_t poly[CE_MOD_COUNT - 1], u32 nsr,
+ u64 ber_pt, u8 *mod_lower, u64 *ber_lower,
+ u64 *ber_upper)
{
/* Check parameters. */
dbg_assert (poly);
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index 948487fa6e..64365a47d0 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -76,7 +76,6 @@ ce_rx_bl_sort_optimization (ce_rx_bl_ber_impact_t *opti_table,
u64
ce_rx_bl_update_tone_map_under_ber_consign (u64 ber_pt,
tonemask_info_t *tonemask,
- phy_fecrate_t fec_rate,
ce_rx_bitloading_t *bl,
tonemap_t *tm,
ce_rx_bl_ber_impact_t *opti_table,
@@ -114,7 +113,7 @@ ce_rx_bl_update_tone_map_under_ber_consign (u64 ber_pt,
{
/* Compute BER. */
dbg_assert_ptr (nsr_data);
- ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef[fec_rate],
+ ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef,
nsr_data[carrier_index % (BLK_SIZE / 4)], ber_pt,
&modulation, &opti_table[i].ber_lower, &ber_upper);
/* Update optimization table. */
@@ -298,8 +297,7 @@ ce_rx_bl_compute_tone_map_iterative (const u64 bpt_initial[PHY_FEC_RATE_NB],
/* Make the tone map reach the BER consign, no optimization. */
u64 ber_weighted_sum_q49 =
ce_rx_bl_update_tone_map_under_ber_consign (ber_cur, reducedtm,
- fec_rate, bl,
- tm[fec_rate],
+ bl, tm[fec_rate],
opti[fec_rate],
&tone_en);
diff --git a/cesar/ce/rx/bitloading/src/import_poly_coeff.pl b/cesar/ce/rx/bitloading/src/import_poly_coeff.pl
index 98678e78b1..f69796f78f 100644
--- a/cesar/ce/rx/bitloading/src/import_poly_coeff.pl
+++ b/cesar/ce/rx/bitloading/src/import_poly_coeff.pl
@@ -41,56 +41,52 @@ sub render
{
# BER vs NSR coefficients.
print "ce_rx_bl_ber_poly_coef_t ";
- print "ce_rx_bl_ber_poly_coef[PHY_FEC_RATE_NB][CE_MOD_COUNT - 1] =
+ print "ce_rx_bl_ber_poly_coef[CE_MOD_COUNT - 1] =
{\n";
- # For each rate.
- for my $rate (sort values %fec_rate)
+ # Select one FEC rate.
+ my $rate = $fec_rate{"16/21"};
+ # For each modulation.
+ for my $i (1, 2, 3, 4, 6, 8, 10)
{
- print " {\n";
- # For each modulation.
- for my $i (1, 2, 3, 4, 6, 8, 10)
- {
- # Get arrays.
- my @polys = @{$values[$rate]->{'poly' . $i}};
- my @enss = @{$values[$rate]->{'ens' . $i}};
- # Count number of polynomials.
- my $poly_count = @polys;
- # Add "ll" at end of each number and count number of occurence.
- my @counts;
- push @counts, (s/(-?\d+)/ $1ll/g - 1) for @polys;
- # Convert ens (to remove continuous values).
- my $enss = join ', ', @enss;
- $enss =~ y/{}//d;
- @enss = split /\s*,\s*/, $enss;
- my @ens = shift @enss;
- my $ff = 1;
- for (@enss)
- {
- if ($ff)
- {
- push @ens, $_;
- }
- else
- {
- die "non consecutive ensemble" unless $_ == $ens[-1] + 1;
- }
- $ff = !$ff;
- }
- # Cosmetic changes.
- s/(\})/ $1/ for @polys;
- # Render.
- local $" = ', ';
- print " {
- $poly_count,
- { @counts },
- {
- @polys,
- },
- { @ens },
+ # Get arrays.
+ my @polys = @{$values[$rate]->{'poly' . $i}};
+ my @enss = @{$values[$rate]->{'ens' . $i}};
+ # Count number of polynomials.
+ my $poly_count = @polys;
+ # Add "ll" at end of each number and count number of occurence.
+ my @counts;
+ push @counts, (s/(-?\d+)/ $1ll/g - 1) for @polys;
+ # Convert ens (to remove continuous values).
+ my $enss = join ', ', @enss;
+ $enss =~ y/{}//d;
+ @enss = split /\s*,\s*/, $enss;
+ my @ens = shift @enss;
+ my $ff = 1;
+ for (@enss)
+ {
+ if ($ff)
+ {
+ push @ens, $_;
+ }
+ else
+ {
+ die "non consecutive ensemble" unless $_ == $ens[-1] + 1;
+ }
+ $ff = !$ff;
+ }
+ # Cosmetic changes.
+ s/(\})/ $1/ for @polys;
+ # Render.
+ local $" = ', ';
+ print " {
+ $poly_count,
+ { @counts },
+ {
+ @polys,
},
+ { @ens },
+ },
"
- }
- print " },\n";
}
print "};\n";
diff --git a/cesar/ce/rx/bitloading/test/src/test_bl.c b/cesar/ce/rx/bitloading/test/src/test_bl.c
index 9de9c6f525..27593766bf 100644
--- a/cesar/ce/rx/bitloading/test/src/test_bl.c
+++ b/cesar/ce/rx/bitloading/test/src/test_bl.c
@@ -259,8 +259,8 @@ test_suite_ce_rx_bl_nsr_sum (test_t t)
test_begin (t, "initial tone map (non optimized)")
{
- ce_rx_bl_update_tone_map_under_ber_consign (ber_pt, &ti, fec_rate,
- &bl, tm, opti, &tone_en);
+ ce_rx_bl_update_tone_map_under_ber_consign (ber_pt, &ti, &bl, tm,
+ opti, &tone_en);
uint tone, i = 0, j = 0;
uint tone_diff = 0;
#define TONEMAP_READ_OPEN {
@@ -305,8 +305,7 @@ test_suite_ce_rx_bl_nsr_sum (test_t t)
u64 ber_pt = ce_rx_bl_ber_pt_bpt (fec_rate, ti.carrier_nb,
ce_rx_bl_initial_bpt[fec_rate]);
u64 ber_weighted_sum =
- ce_rx_bl_update_tone_map_under_ber_consign (ber_pt, &ti,
- fec_rate, &bl, tm,
+ ce_rx_bl_update_tone_map_under_ber_consign (ber_pt, &ti, &bl, tm,
opti, &tone_en);
ce_rx_bl_sort_optimization (opti, ti.carrier_nb);
ce_rx_bl_update_tone_map_at_ber_consign (ber_pt, &ti, &bl, tm, opti,
@@ -435,7 +434,7 @@ test_suite_ce_rx_bl_ber (test_t t)
i < polynomial_nsr_height; i++, nsr += nsr_step)
{
/* Compute BER. */
- s64 ber = ce_rx_bl_ber_for_mod_initial (nsr, 1, PHY_FEC_RATE_1_2);
+ s64 ber = ce_rx_bl_ber_for_mod_initial (nsr, 1);
/* Test failed if difference over tolerated error. */
test_fail_if (ABS (ber - polynomial_nsr[i][0]) != 0);
}
@@ -459,8 +458,7 @@ test_suite_ce_rx_bl_ber (test_t t)
if (mean_on_sound_nsr[i][0])
{
/* Get lower modulation. */
- ce_rx_bl_ber_vs_nsr
- (ce_rx_bl_ber_poly_coef[fec_rate],
+ ce_rx_bl_ber_vs_nsr (ce_rx_bl_ber_poly_coef,
mean_on_sound_nsr[i][0], ber_pt,
&mod_lower, &ber_lower, &ber_upper);
/* Check from vector. */
@@ -885,8 +883,7 @@ test_suite_ce_rx_bl_nsr_margin (test_t t)
uint tone_en;
u64 ber_weighted_sum =
ce_rx_bl_update_tone_map_under_ber_consign (ber_pt, &ti,
- fec_rate, &bl,
- tm, opti,
+ &bl, tm, opti,
&tone_en);
ce_rx_bl_sort_optimization (opti, ti.carrier_nb);
ce_rx_bl_update_tone_map_at_ber_consign (ber_pt, &ti, &bl, tm,
diff --git a/cesar/ce/rx/bitloading/test/src/test_poly.c b/cesar/ce/rx/bitloading/test/src/test_poly.c
index acfdc1fa69..9cce55c75e 100644
--- a/cesar/ce/rx/bitloading/test/src/test_poly.c
+++ b/cesar/ce/rx/bitloading/test/src/test_poly.c
@@ -22,39 +22,33 @@ test_ce_rx_poly (test_t t)
u64 ber, ber_prev = 0;
u32 nsr;
u8 mod_index;
- phy_fecrate_t fec_rate;
ce_rx_bl_ber_poly_coef_t *poly;
test_begin (t, "output BER values should increase when NSR increase")
{
for (mod_index = 1; mod_index < CE_MOD_COUNT; mod_index++)
{
- for (fec_rate = 0; fec_rate < PHY_FEC_RATE_NB; fec_rate++)
- {
- poly = &ce_rx_bl_ber_poly_coef[fec_rate][mod_index - 1];
- ber_prev = 0;
+ poly = &ce_rx_bl_ber_poly_coef[mod_index - 1];
+ ber_prev = 0;
- for (nsr = poly->range[0];
- nsr <= poly->range[poly->poly_count];
- nsr++)
- {
- ber = ce_rx_bl_ber_for_mod
- (ce_rx_bl_ber_poly_coef[fec_rate], nsr, mod_index);
- test_fail_if (ber_prev > ber,
- "previous BER is over current one ("
- "fec_rate = %d, mod_index = %d, nsr = %d, "
- "ber_prev = %lld, ber_value = %lld)",
- fec_rate, mod_index, nsr, ber_prev, ber);
- test_fail_if (ber >= CE_RX_BL_BER_DEFAULT_OVER,
- "BER at max (fec_rate = %d, "
- "mod_index = %d, nsr = %d)",
- fec_rate, mod_index, nsr);
- test_fail_if (ber <= CE_RX_BL_BER_DEFAULT_UNDER,
- "BER at min (fec_rate = %d, "
- "mod_index = %d, nsr = %d)",
- fec_rate, mod_index, nsr);
- ber_prev = ber;
- }
+ for (nsr = poly->range[0];
+ nsr <= poly->range[poly->poly_count];
+ nsr++)
+ {
+ ber = ce_rx_bl_ber_for_mod
+ (ce_rx_bl_ber_poly_coef, nsr, mod_index);
+ test_fail_if (ber_prev > ber,
+ "previous BER is over current one ("
+ "mod_index = %d, nsr = %d, "
+ "ber_prev = %lld, ber_value = %lld)",
+ mod_index, nsr, ber_prev, ber);
+ test_fail_if (ber >= CE_RX_BL_BER_DEFAULT_OVER,
+ "BER at max (mod_index = %d, nsr = %d)",
+ mod_index, nsr);
+ test_fail_if (ber <= CE_RX_BL_BER_DEFAULT_UNDER,
+ "BER at min (mod_index = %d, nsr = %d)",
+ mod_index, nsr);
+ ber_prev = ber;
}
}
} test_end;
@@ -62,32 +56,29 @@ test_ce_rx_poly (test_t t)
test_begin (t, "output BER values should increase when modulation "
"increase (with fixed NSR)")
{
- for (fec_rate = 0; fec_rate < PHY_FEC_RATE_NB; fec_rate++)
+ /* Get NSR range min, max. */
+ uint nsr_min = (uint) -1, nsr_max = 0;
+ for (mod_index = 1; mod_index < CE_MOD_COUNT; mod_index++)
{
- /* Get NSR range min, max. */
- uint nsr_min = (uint) -1, nsr_max = 0;
+ poly = &ce_rx_bl_ber_poly_coef[mod_index - 1];
+ nsr_min = MIN (nsr_min, poly->range[0]);
+ nsr_max = MAX (nsr_max, poly->range[poly->poly_count]);
+ }
+ /* Go through all supported NSR. */
+ for (nsr = nsr_min; nsr < nsr_max; nsr++)
+ {
+ ber_prev = 0;
for (mod_index = 1; mod_index < CE_MOD_COUNT; mod_index++)
{
- poly = &ce_rx_bl_ber_poly_coef[fec_rate][mod_index - 1];
- nsr_min = MIN (nsr_min, poly->range[0]);
- nsr_max = MAX (nsr_max, poly->range[poly->poly_count]);
- }
- /* Go through all supported NSR. */
- for (nsr = nsr_min; nsr < nsr_max; nsr++)
- {
- ber_prev = 0;
- for (mod_index = 1; mod_index < CE_MOD_COUNT; mod_index++)
- {
- ber = ce_rx_bl_ber_for_mod
- (ce_rx_bl_ber_poly_coef[fec_rate], nsr, mod_index);
- test_fail_if (ber_prev > ber,
- "previous BER is over current one ("
- "fec_rate = %d, mod_index = %d, nsr = %d, "
- "ber_prev = %lld, ber_value = %lld)",
- fec_rate, mod_index, nsr, ber_prev, ber);
- test_fail_if (ber > CE_RX_BL_BER_DEFAULT_OVER);
- ber_prev = ber;
- }
+ ber = ce_rx_bl_ber_for_mod
+ (ce_rx_bl_ber_poly_coef, nsr, mod_index);
+ test_fail_if (ber_prev > ber,
+ "previous BER is over current one ("
+ "mod_index = %d, nsr = %d, "
+ "ber_prev = %lld, ber_value = %lld)",
+ mod_index, nsr, ber_prev, ber);
+ test_fail_if (ber > CE_RX_BL_BER_DEFAULT_OVER);
+ ber_prev = ber;
}
}
} test_end;