summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/src/bitloading.c
diff options
context:
space:
mode:
authorJérôme Jutteau2011-04-27 12:11:12 +0200
committerJérôme Jutteau2011-06-28 17:02:24 +0200
commit3f4853f8160dc4bae8addc29c8c55c8b122b7e87 (patch)
tree87b0b153e494c5950db9e6a04f80ffc80cc80558 /cesar/ce/rx/bitloading/src/bitloading.c
parenta1f1b0f29b7ff28a247a138eab20f933c22a9262 (diff)
cesar/ce/rx/bl: PB Error Rate tracking, closes #2482
This commit also includes a comment indentation fix in bitloading_t.
Diffstat (limited to 'cesar/ce/rx/bitloading/src/bitloading.c')
-rw-r--r--cesar/ce/rx/bitloading/src/bitloading.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/cesar/ce/rx/bitloading/src/bitloading.c b/cesar/ce/rx/bitloading/src/bitloading.c
index fc2c6f0f9b..649fcb09c2 100644
--- a/cesar/ce/rx/bitloading/src/bitloading.c
+++ b/cesar/ce/rx/bitloading/src/bitloading.c
@@ -16,6 +16,7 @@
#include "ce/rx/bitloading/inc/ber.h"
#include "ce/rx/bitloading/inc/bitloading.h"
#include "mac/common/tonemap.h"
+#include "mac/common/defs.h"
#define LIB_HEAPSORT_USER_TYPE ce_rx_bl_ber_impact_t
#define LIB_HEAPSORT_USER_COMP_LESSER ce_rx_bl_ber_impact_compare
@@ -542,3 +543,31 @@ ce_rx_bl_tone_map_update_compute_new_tonemap (ce_rx_bitloading_t *bl,
bl->opti_table_cursor = new_opti_cursor;
return out;
}
+
+void
+ce_rx_bl_pber_sliding_mean_update (ce_rx_bitloading_t *bt,
+ uint pb_count,
+ uint false_pb_count)
+{
+ dbg_assert (bt);
+ dbg_assert (pb_count > 0);
+ dbg_assert (false_pb_count <= pb_count);
+ /* The maximum pb_count value given by hardware can't be over
+ * MAC_MAX_PB_PER_MPDU. */
+ dbg_assert (pb_count <= MAC_MAX_PB_PER_MPDU);
+ uint pber_quantified = false_pb_count
+ * CE_RX_BL_UPDATE_PBER_SLIDING_MEAN_QUANTIFICATION / pb_count;
+ dbg_assert (pber_quantified
+ <= CE_RX_BL_UPDATE_PBER_SLIDING_MEAN_QUANTIFICATION);
+ /* Init PB Error Rate sliding mean. */
+ if (bt->pber_sliding_mean < 0)
+ bt->pber_sliding_mean = pber_quantified;
+ /* Add current measure. */
+ else
+ {
+ dbg_assert (bt->pber_sliding_mean
+ <= CE_RX_BL_UPDATE_PBER_SLIDING_MEAN_QUANTIFICATION);
+ bt->pber_sliding_mean = (255 * bt->pber_sliding_mean
+ + 1 * pber_quantified) / 256;
+ }
+}