summaryrefslogtreecommitdiff
path: root/cesar
diff options
context:
space:
mode:
authordufour2010-04-30 12:43:40 +0000
committerdufour2010-04-30 12:43:40 +0000
commit8f086ea7198ce7267a692db2eabb5b67d627f579 (patch)
treecbefa144e95807a557518d7c3d89684e6768a23b /cesar
parent88645cc20a9bef3c71927a9df7ee160e3c9b05bf (diff)
cesar/ce: add a module to debug the CE using GPIO, closes #1516
git-svn-id: svn+ssh://pessac/svn/cesar/trunk@6956 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar')
-rw-r--r--cesar/ce/Module2
-rw-r--r--cesar/ce/debug/gpio/Config23
-rw-r--r--cesar/ce/debug/gpio/Config_debug_gpio23
-rw-r--r--cesar/ce/debug/gpio/Module5
-rw-r--r--cesar/ce/debug/gpio/gpio.h117
-rw-r--r--cesar/ce/debug/gpio/src/gpio.c110
-rw-r--r--cesar/ce/rx/bitloading/fsm/src/fsm.c5
-rw-r--r--cesar/ce/rx/bitloading/src/common.c5
-rw-r--r--cesar/ce/rx/bitloading/src/transition.c23
-rw-r--r--cesar/ce/rx/src/measure.c4
-rw-r--r--cesar/ce/tx/src/mme.c9
-rw-r--r--cesar/lib/init.h1
-rw-r--r--cesar/station/src/station.c4
13 files changed, 330 insertions, 1 deletions
diff --git a/cesar/ce/Module b/cesar/ce/Module
index 3c121f32ce..7910d4be24 100644
--- a/cesar/ce/Module
+++ b/cesar/ce/Module
@@ -1,3 +1,3 @@
-MODULES := ce/common \
+MODULES := ce/common ce/debug/gpio \
ce/tx \
ce/rx ce/rx/cp ce/rx/bitloading ce/rx/bitloading/fsm
diff --git a/cesar/ce/debug/gpio/Config b/cesar/ce/debug/gpio/Config
new file mode 100644
index 0000000000..580ae25421
--- /dev/null
+++ b/cesar/ce/debug/gpio/Config
@@ -0,0 +1,23 @@
+# By default, debug with GPIO is disabled.
+CONFIG_CE_DEBUG_GPIO = n
+
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_VALID = n
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_VALID_GPIO = 6
+CONFIG_GPIO_CE_RX_CB = n
+CONFIG_GPIO_CE_RX_CB_GPIO = 7
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_1 = n
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_1_GPIO = 8
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_2 = n
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_2_GPIO = 9
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_3 = n
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_3_GPIO = 10
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_1 = n
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_1_GPIO = 11
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_2 = n
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_2_GPIO = 12
+CONFIG_GPIO_CE_RX_BL_COMPUTING = n
+CONFIG_GPIO_CE_RX_BL_COMPUTING_GPIO = 13
+CONFIG_GPIO_CE_RX_BL_ROBO_BETTER = n
+CONFIG_GPIO_CE_RX_BL_ROBO_BETTER_GPIO = 14
+CONFIG_GPIO_CE_TX_MME_DEFAULT_TMI_CHANGE = n
+CONFIG_GPIO_CE_TX_MME_DEFAULT_TMI_CHANGE_GPIO = 15
diff --git a/cesar/ce/debug/gpio/Config_debug_gpio b/cesar/ce/debug/gpio/Config_debug_gpio
new file mode 100644
index 0000000000..c9fbe212e0
--- /dev/null
+++ b/cesar/ce/debug/gpio/Config_debug_gpio
@@ -0,0 +1,23 @@
+# Configuration with CE debug using GPIO enabled
+CONFIG_CE_DEBUG_GPIO = y
+
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_VALID = y
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_VALID_GPIO = 6
+CONFIG_GPIO_CE_RX_CB = y
+CONFIG_GPIO_CE_RX_CB_GPIO = 7
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_1 = y
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_1_GPIO = 8
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_2 = y
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_2_GPIO = 9
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_3 = y
+CONFIG_GPIO_CE_RX_BL_FSM_EVENT_3_GPIO = 10
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_1 = y
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_1_GPIO = 11
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_2 = y
+CONFIG_GPIO_CE_RX_BL_FSM_STATE_2_GPIO = 12
+CONFIG_GPIO_CE_RX_BL_COMPUTING = y
+CONFIG_GPIO_CE_RX_BL_COMPUTING_GPIO = 13
+CONFIG_GPIO_CE_RX_BL_ROBO_BETTER = y
+CONFIG_GPIO_CE_RX_BL_ROBO_BETTER_GPIO = 14
+CONFIG_GPIO_CE_TX_MME_DEFAULT_TMI_CHANGE = y
+CONFIG_GPIO_CE_TX_MME_DEFAULT_TMI_CHANGE_GPIO = 15
diff --git a/cesar/ce/debug/gpio/Module b/cesar/ce/debug/gpio/Module
new file mode 100644
index 0000000000..e3f3cd4220
--- /dev/null
+++ b/cesar/ce/debug/gpio/Module
@@ -0,0 +1,5 @@
+# Use the right config file if debug with GPIO is enabled
+ifeq ($(CONFIG_CE_DEBUG_GPIO),y)
+ CONFIG := Config_debug_gpio
+endif
+SOURCES := gpio.c
diff --git a/cesar/ce/debug/gpio/gpio.h b/cesar/ce/debug/gpio/gpio.h
new file mode 100644
index 0000000000..9de2331264
--- /dev/null
+++ b/cesar/ce/debug/gpio/gpio.h
@@ -0,0 +1,117 @@
+#ifndef ce_debug_gpio_gpio_h
+#define ce_debug_gpio_gpio_h
+/* Cesar project {{{
+ *
+ * Copyright (C) 2010 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file ce/debug/gpio/gpio.h
+ * \brief Debug the CE using GPIO
+ * \ingroup ce
+ *
+ * This module is to help debugging the CE using the GPIOs. It will provide
+ * some kind of traces using the GPIOs. This will probably require the
+ * logical analyser.
+ */
+#include "common/module.h"
+
+#if MODULE_INCLUDED (ce_debug_gpio)
+# include "config/ce/debug/gpio.h"
+# define CE_DEBUG_GPIO_ENABLED CONFIG_CE_DEBUG_GPIO
+#else
+# define CE_DEBUG_GPIO_ENABLED 0
+#endif
+
+/**
+ * The list of events to "trace".
+ */
+typedef enum ce_debug_gpio_event_t
+{
+ /**
+ * SAR call back called for something.
+ * Call this event if you do not add the measure into the mailbox for the
+ * CE.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_SAR_CB,
+ /**
+ * Empty event for measure.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_NONE,
+ /**
+ * Measure is based on sounds (without sound complete flag).
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND,
+ /**
+ * Measure is based on sounds (with sound complete flag).
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND_COMPLETE,
+ /**
+ * Measure is not based on sounds, PB error rate is low, BER sliding means
+ * are not too low.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_NORMAL,
+ /**
+ * Measure is not based on sounds and PB error rate is high.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_HIGH_PB_ERROR_RATE,
+ /**
+ * Measure is not based on sounds and both BER sliding means are low.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_BER_LOW,
+ /**
+ * Bit loading FSM is in state IDLE.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_IDLE,
+ /**
+ * Bit loading FSM is in state INITIAL.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_INITIAL,
+ /**
+ * Bit loading FSM is in state TRACKING.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_TRACKING,
+ /**
+ * Bit loading is working (tone map computation is ongoing).
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_WORKING,
+ /**
+ * ROBO is better than computed tone map.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_RX_BL_ROBO_BETTER,
+ /**
+ * Default TMI on TX has changed.
+ */
+ CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE,
+} ce_debug_gpio_event_t;
+
+BEGIN_DECLS
+
+#if CE_DEBUG_GPIO_ENABLED
+
+/**
+ * Init CE debug GPIO module.
+ */
+void
+ce_debug_gpio_init (void);
+
+/**
+ * An event is ongoing.
+ * \param event the event which is occurring
+ * \param enabled true if the event should be enabled, false otherwise
+ */
+void
+ce_debug_gpio_event (ce_debug_gpio_event_t event, bool enabled);
+
+#else
+
+# define ce_debug_gpio_init() ((void) 0)
+# define ce_debug_gpio_event(event, enabled) ((void) 0)
+
+#endif
+
+END_DECLS
+
+#endif /* ce_debug_gpio_gpio_h */
diff --git a/cesar/ce/debug/gpio/src/gpio.c b/cesar/ce/debug/gpio/src/gpio.c
new file mode 100644
index 0000000000..0b5faa674f
--- /dev/null
+++ b/cesar/ce/debug/gpio/src/gpio.c
@@ -0,0 +1,110 @@
+/* Cesar project {{{
+ *
+ * Copyright (C) 2010 Spidcom
+ *
+ * <<<Licence>>>
+ *
+ * }}} */
+/**
+ * \file ce/debug/gpio/src/gpio.c
+ * \brief Debug the CE using GPIO
+ * \ingroup ce
+ */
+#include "common/std.h"
+
+#include "ce/debug/gpio/gpio.h"
+
+#if CE_DEBUG_GPIO_ENABLED
+
+#include "hal/gpio/gpio.h"
+#include "lib/init.h"
+
+INIT_REGISTER (INIT_LIST_CE, ce_debug_gpio);
+
+void
+ce_debug_gpio_init (void)
+{
+ GPIO_SETUP (CE_RX_CB, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_EVENT_VALID, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_EVENT_1, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_EVENT_2, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_EVENT_3, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_STATE_1, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_FSM_STATE_2, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_COMPUTING, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_RX_BL_ROBO_BETTER, GPIO_DIRECTION_OUT);
+ GPIO_SETUP (CE_TX_MME_DEFAULT_TMI_CHANGE, GPIO_DIRECTION_OUT);
+ GPIO_SET (CE_RX_CB, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_VALID, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_1, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_2, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_3, 0);
+ GPIO_SET (CE_RX_BL_FSM_STATE_1, 0);
+ GPIO_SET (CE_RX_BL_FSM_STATE_2, 0);
+ GPIO_SET (CE_RX_BL_COMPUTING, 0);
+ GPIO_SET (CE_RX_BL_ROBO_BETTER, 0);
+ GPIO_SET (CE_TX_MME_DEFAULT_TMI_CHANGE, 0);
+}
+
+void
+ce_debug_gpio_event (ce_debug_gpio_event_t event, bool enabled)
+{
+ switch (event)
+ {
+ case CE_DEBUG_GPIO_EVENT_CE_RX_SAR_CB:
+ GPIO_SET (CE_RX_CB, enabled ? 1 : 0);
+ break;
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_NONE:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND_COMPLETE:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_NORMAL:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_HIGH_PB_ERROR_RATE:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_BER_LOW:
+ GPIO_SET (CE_RX_BL_FSM_EVENT_VALID, 0);
+ if (enabled)
+ {
+ u8 val = event - CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_NONE;
+ GPIO_SET (CE_RX_BL_FSM_EVENT_1, val & 0x1);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_2, (val >> 1) & 0x1);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_3, (val >> 2) & 0x1);
+ }
+ else
+ {
+ dbg_assert (event == CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_NONE);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_1, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_2, 0);
+ GPIO_SET (CE_RX_BL_FSM_EVENT_3, 0);
+ }
+ GPIO_SET (CE_RX_BL_FSM_EVENT_VALID, 1);
+ break;
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_IDLE:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_INITIAL:
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_TRACKING:
+ if (enabled)
+ {
+ u8 val = event - CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_IDLE;
+ GPIO_SET (CE_RX_BL_FSM_STATE_1, val & 0x1);
+ GPIO_SET (CE_RX_BL_FSM_STATE_2, (val >> 1) & 0x1);
+ }
+ else
+ {
+ GPIO_SET (CE_RX_BL_FSM_STATE_1, 0);
+ GPIO_SET (CE_RX_BL_FSM_STATE_2, 0);
+ }
+ break;
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_WORKING:
+ GPIO_SET (CE_RX_BL_COMPUTING, enabled ? 1 : 0);
+ break;
+ case CE_DEBUG_GPIO_EVENT_CE_RX_BL_ROBO_BETTER:
+ GPIO_SET (CE_RX_BL_ROBO_BETTER, enabled ? 1 : 0);
+ break;
+ case CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE:
+ GPIO_SET (CE_TX_MME_DEFAULT_TMI_CHANGE, enabled ? 1 : 0);
+ break;
+ default:
+ /* Unsupported event. */
+ dbg_assert_default ();
+ }
+}
+
+#endif
diff --git a/cesar/ce/rx/bitloading/fsm/src/fsm.c b/cesar/ce/rx/bitloading/fsm/src/fsm.c
index 5f27f653f4..ae24d369d2 100644
--- a/cesar/ce/rx/bitloading/fsm/src/fsm.c
+++ b/cesar/ce/rx/bitloading/fsm/src/fsm.c
@@ -17,6 +17,7 @@
#include "ce/rx/bitloading/fsm/fsm.h"
#include "inc/tables.h"
#include "ce/rx/inc/trace.h"
+#include "ce/debug/gpio/gpio.h"
void
ce_rx_bl_fsm_handle_event (ce_rx_t *ce_rx, sta_t *sta, ce_rx_bl_fsm_event_type_t e,
@@ -41,4 +42,8 @@ ce_rx_bl_fsm_handle_event (ce_rx_t *ce_rx, sta_t *sta, ce_rx_bl_fsm_event_type_t
sta->ce_rx_bt.fsm = br & 0xff;
CE_RX_TRACE_VERBOSE (FSM_FROM_TO, fsm, e, sta->ce_rx_bt.fsm);
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_FSM_IDLE + sta->ce_rx_bt.fsm, true);
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_NONE, false);
}
diff --git a/cesar/ce/rx/bitloading/src/common.c b/cesar/ce/rx/bitloading/src/common.c
index b60c716574..019a09852e 100644
--- a/cesar/ce/rx/bitloading/src/common.c
+++ b/cesar/ce/rx/bitloading/src/common.c
@@ -17,6 +17,7 @@
#include "ce/rx/bitloading/inc/ber.h"
#include "ce/rx/cp/inc/cp.h"
#include "ce/rx/inc/trace.h"
+#include "ce/debug/gpio/gpio.h"
void
ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
@@ -27,6 +28,7 @@ ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
/* Not using ce_rx directly. */
CE_RX_TRACE (BL_INITIAL);
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_BL_WORKING, true);
/* Compute initial tone map. */
tonemap_t *initial_tm = ce_rx_bl_initial (ts, &sta->ce_rx_bt);
@@ -60,6 +62,7 @@ ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
}
else
{
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_BL_ROBO_BETTER, true);
/* TMI ROBO. */
tmi = PHY_MOD_ROBO;
/* Remove computed tone map. */
@@ -70,6 +73,8 @@ ce_rx_bl_start_bl (ce_rx_t *ce_rx, sta_t *sta, tonemask_info_t *ts)
sta->rx_tonemaps->default_tmi = tmi;
ce_rx_cp_send_mme_new_tone_map
(ce_rx, sta, TONEMAP_INDEX_IS_NEGOTIATED (tmi) ? tmi : 0, 0, true);
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_BL_WORKING, false);
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_BL_ROBO_BETTER, false);
}
bool
diff --git a/cesar/ce/rx/bitloading/src/transition.c b/cesar/ce/rx/bitloading/src/transition.c
index 354e4e5edf..42ddbb6731 100644
--- a/cesar/ce/rx/bitloading/src/transition.c
+++ b/cesar/ce/rx/bitloading/src/transition.c
@@ -24,6 +24,7 @@
#include "ce/rx/cp/inc/cp.h"
#include "ce/rx/cp/mme.h"
#include "ce/rx/inc/rx.h"
+#include "ce/debug/gpio/gpio.h"
#include "mac/common/tonemap.h"
#include "mac/pbproc/pbproc.h"
#include "cp/sta/mgr/sta_mgr.h"
@@ -61,6 +62,8 @@ ce_rx_bl__common_initial_sound_measure_received (ce_rx_t *ce_rx, sta_t *sta,
/* Sound complete? */
if (measure->rx_params.sound_complete)
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND_COMPLETE, true);
dbg_assert (ce_rx);
dbg_assert (ce_rx->mac_config);
/* Compute NSR mean (in every case). */
@@ -69,6 +72,8 @@ ce_rx_bl__common_initial_sound_measure_received (ce_rx_t *ce_rx, sta_t *sta,
ce_rx_bl_start_bl (ce_rx, sta, &ce_rx->mac_config->tonemask_info);
return true;
}
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND, true);
return false;
}
@@ -153,7 +158,11 @@ ce_rx_bl__IDLE__measure_received (ce_rx_t *ce_rx, sta_t *sta,
sound_not_complete);
}
else
+ {
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_NORMAL, true);
return ce_rx_bl_fsm_next_branch (IDLE, measure_received, not_sound);
+ }
}
ce_rx_bl_fsm_branch_t
@@ -182,8 +191,12 @@ ce_rx_bl__INITIAL__measure_received (ce_rx_t *ce_rx, sta_t *sta,
sound_not_complete);
}
else
+ {
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_NORMAL, true);
return ce_rx_bl_fsm_next_branch (INITIAL, measure_received,
not_sound);
+ }
}
ce_rx_bl_fsm_branch_t
@@ -204,12 +217,16 @@ ce_rx_bl__TRACKING__measure_received (ce_rx_t *ce_rx, sta_t *sta,
/* Sound complete? */
if (measure->rx_params.sound_complete)
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND_COMPLETE, true);
/* Maybe more than one sound complete flag. Let's ignore it. */
return ce_rx_bl_fsm_next_branch (TRACKING, measure_received,
sound_complete);
}
else
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_SOUND, true);
/* Restart CE in RX. */
ce_rx_bl__common__restart_ce_rx (ce_rx, sta);
/* Initialize sum of NSR. */
@@ -248,6 +265,8 @@ ce_rx_bl__TRACKING__measure_received (ce_rx_t *ce_rx, sta_t *sta,
if (sta->ce_rx_bt.high_pb_error_rate_frame_counter
>= ce_rx_bl_min_frame_with_high_pb_err_rate_)
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_HIGH_PB_ERROR_RATE, true);
/* Restart CE. */
ce_rx_bl__common__restart_ce (ce_rx, sta);
@@ -280,6 +299,8 @@ ce_rx_bl__TRACKING__measure_received (ce_rx_t *ce_rx, sta_t *sta,
&& ((u64) bsm[CE_RX_BL_BER_SLIDING_MEAN_SLOW]
< lower_bound))
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_BER_LOW, true);
/* Restart CE. */
ce_rx_bl__common__restart_ce (ce_rx, sta);
return ce_rx_bl_fsm_next_branch (TRACKING,
@@ -290,6 +311,8 @@ ce_rx_bl__TRACKING__measure_received (ce_rx_t *ce_rx, sta_t *sta,
}
}
}
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_RX_BL_MEASURE_DATA_NORMAL, true);
return ce_rx_bl_fsm_next_branch (TRACKING, measure_received,
not_sound_pb_err_rate_low);
}
diff --git a/cesar/ce/rx/src/measure.c b/cesar/ce/rx/src/measure.c
index 83f0e9f2aa..485b0f0bde 100644
--- a/cesar/ce/rx/src/measure.c
+++ b/cesar/ce/rx/src/measure.c
@@ -16,6 +16,7 @@
#include "ce/rx/inc/measure.h"
#include "ce/rx/inc/rx.h"
#include "lib/utils.h"
+#include "ce/debug/gpio/gpio.h"
/**
* Destructor for a measure.
@@ -41,6 +42,8 @@ ce_rx_measure_sar_cb (void *data, pbproc_rx_params_t *rx_params,
/* Check parameter required for test. */
dbg_assert (rx_params);
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_SAR_CB, true);
+
/* Only handle measures for a "valid" STA. */
if (MAC_TEI_IS_STA (rx_params->tei))
{
@@ -90,6 +93,7 @@ ce_rx_measure_sar_cb (void *data, pbproc_rx_params_t *rx_params,
ce_rx_work_add (ce_rx, CE_RX_WORK_FLAG_MEASURE);
}
}
+ ce_debug_gpio_event (CE_DEBUG_GPIO_EVENT_CE_RX_SAR_CB, false);
}
void
diff --git a/cesar/ce/tx/src/mme.c b/cesar/ce/tx/src/mme.c
index 5bbb5b8047..67dd25e966 100644
--- a/cesar/ce/tx/src/mme.c
+++ b/cesar/ce/tx/src/mme.c
@@ -25,6 +25,7 @@
#include "ce/common/mod.h"
#include "ce/tx/inc/mme.h"
#include "ce/tx/inc/tx.h"
+#include "ce/debug/gpio/gpio.h"
/**
* Check Response Inter Frame Spacing.
@@ -642,8 +643,12 @@ ce_tx_cm_chan_est_ind_receive (cp_t *ctx, cp_mme_rx_t *mme)
{
if (sta_s_tx_tonemap->default_tmi != header.cp_tmi_av)
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE, true);
CP_TRACE (CE_TX_NEW_DEFAULT_TMI, header.cp_tmi_av);
sta_s_tx_tonemap->default_tmi = header.cp_tmi_av;
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE, false);
}
}
/* Reset bitmap field for sound complete. */
@@ -823,8 +828,12 @@ ce_tx_cm_tm_update_ind_receive (cp_t *ctx, cp_mme_rx_t *mme)
{
if (sta_s_tx_tonemap->default_tmi != default_tmi)
{
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE, true);
CP_TRACE (CE_TX_NEW_DEFAULT_TMI, default_tmi);
sta_s_tx_tonemap->default_tmi = default_tmi;
+ ce_debug_gpio_event
+ (CE_DEBUG_GPIO_EVENT_CE_TX_MME_DEFAULT_TMI_CHANGE, false);
}
}
/* Reset bitmap field for sound complete. */
diff --git a/cesar/lib/init.h b/cesar/lib/init.h
index ede9e837f5..1f46ea9dda 100644
--- a/cesar/lib/init.h
+++ b/cesar/lib/init.h
@@ -37,6 +37,7 @@ enum init_list_id_t
INIT_LIST_HAL,
INIT_LIST_HAL_SERVICES,
INIT_LIST_SERVICES,
+ INIT_LIST_CE,
INIT_LIST_NB
};
typedef enum init_list_id_t init_list_id_t;
diff --git a/cesar/station/src/station.c b/cesar/station/src/station.c
index 86ac478d35..800e3ca097 100644
--- a/cesar/station/src/station.c
+++ b/cesar/station/src/station.c
@@ -24,6 +24,8 @@
# include "hal/leon/fatal_button.h"
#endif
+#include "lib/init.h"
+
/** Static declaration. */
static cesar_t cesar;
@@ -91,6 +93,8 @@ cesar_init (void)
// start HLE...
hle_activate(cesar.hle, true);
+ init_exec (INIT_LIST_CE);
+
return &cesar;
}