summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/bitloading/fsm/src
diff options
context:
space:
mode:
authorCyril Jourdan2013-05-17 10:49:19 +0200
committerCyril Jourdan2013-05-24 08:42:30 +0200
commit83512c89e58e7b54b677e3fb601624ba12dac859 (patch)
treee4ef271397b58f8b62747e4fc7f532b4f9b1d1f3 /cesar/ce/rx/bitloading/fsm/src
parentfe3068ed91a25903b167e951cdd128ad52ec47c8 (diff)
cesar/ce/rx/bl: handle interval_sound events in global FSM, closes #3957
The goal is to avoid that sound directed to an interval we can not match are treated by global FSM as sound events, what causes a global CE restart. This can lead to too many CE restarts and to an accumulation of measure in CE's mailbox, which leads to the observed assert.
Diffstat (limited to 'cesar/ce/rx/bitloading/fsm/src')
-rw-r--r--cesar/ce/rx/bitloading/fsm/src/fsm.c7
-rw-r--r--cesar/ce/rx/bitloading/fsm/src/fsm/bl.fsm6
2 files changed, 13 insertions, 0 deletions
diff --git a/cesar/ce/rx/bitloading/fsm/src/fsm.c b/cesar/ce/rx/bitloading/fsm/src/fsm.c
index 8fab52c793..2e0a183b91 100644
--- a/cesar/ce/rx/bitloading/fsm/src/fsm.c
+++ b/cesar/ce/rx/bitloading/fsm/src/fsm.c
@@ -128,6 +128,13 @@ ce_rx_bl_fsm_measure_to_event (sta_t *sta,
has_interval = CE_RX_FSM_MEASURE_TO_EVENT_TYPE_INTERVAL;
measure->fsm_id = interval % ce_rx_bl_intervals_fsm_count_;
}
+ else if (type != CE_RX_FSM_MEASURE_TO_EVENT_TYPE_DATA)
+ {
+ /* Indicate that sound frame received is directed to an interval
+ * but let the global fsm handle it as we can not match this
+ * actual interval. */
+ has_interval = CE_RX_FSM_MEASURE_TO_EVENT_TYPE_INTERVAL;
+ }
}
return event_tab[has_interval][type];
diff --git a/cesar/ce/rx/bitloading/fsm/src/fsm/bl.fsm b/cesar/ce/rx/bitloading/fsm/src/fsm/bl.fsm
index c69d043a0d..e82fa44f57 100644
--- a/cesar/ce/rx/bitloading/fsm/src/fsm/bl.fsm
+++ b/cesar/ce/rx/bitloading/fsm/src/fsm/bl.fsm
@@ -54,6 +54,8 @@ IDLE:
Compute tone map.
data -> .
Should not happen?
+ interval_sound -> .
+ interval_sound_completed -> .
INITIAL:
sound -> .
@@ -68,6 +70,8 @@ INITIAL:
Compute the NSR mean.
Compute tone map.
data -> .
+ interval_sound -> .
+ interval_sound_completed -> .
TRACKING:
sound -> INITIAL
@@ -97,6 +101,8 @@ INTERVALS:
Copy the noise NRJ to initialize the mean/sum.
sound_completed -> .
data -> .
+ interval_sound -> .
+ interval_sound_completed -> .
INTERVAL_TRACKING:
interval_sound -> INTERVAL_SOUND