From 4bada290e0ba76e58bd6e622da3e0df26b4a2286 Mon Sep 17 00:00:00 2001 From: Jérémy Dufour Date: Mon, 18 May 2009 17:46:34 +0200 Subject: * digital/io/src: - add some trace to know the FSM transitions and when the main timer is late. --- digital/io/src/main.c | 32 ++++++++++++++++++++++++++++++++ digital/io/src/trace.trc | 9 ++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/digital/io/src/main.c b/digital/io/src/main.c index 1384be2f..22faedc1 100644 --- a/digital/io/src/main.c +++ b/digital/io/src/main.c @@ -29,6 +29,8 @@ #include "modules/utils/utils.h" #include "modules/path/path.h" #include "modules/flash/flash.h" +#include "modules/trace/trace.h" +#include "trace_event.h" /* AVR include, non HOST */ #ifndef HOST @@ -114,6 +116,28 @@ static uint8_t main_stats_asserv_, main_stats_asserv_cpt_; */ static uint8_t main_stats_timer_; +/** + * Get short FSM name. + */ +char +main_short_fsm_name (fsm_t *fsm) +{ + /* Dirty hack. */ + char id = '?'; + if (fsm == &top_fsm) + id = 'T'; + else if (fsm == &init_fsm) + id = 'I'; + else if (fsm == &move_fsm) + id = 'M'; + else if (fsm == &elevator_fsm) + id = 'E'; + else if (fsm == &cylinder_fsm) + id = 'C'; + else if (fsm == &filterbridge_fsm) + id = 'F'; +} + /** * Main events management. * This function is responsible to get all events and send them to the @@ -125,12 +149,14 @@ main_event_to_fsm (void) #define FSM_HANDLE_EVENT(fsm,event) \ { if (fsm_handle_event (fsm,event)) \ { \ + TRACE (TRACE_FSM__HANDLE_EVENT, main_short_fsm_name (fsm), event); \ return; \ } \ } #define FSM_HANDLE_TIMEOUT(fsm) \ { if (fsm_handle_timeout (fsm)) \ { \ + TRACE (TRACE_FSM__HANDLE_TIMEOUT, main_short_fsm_name (fsm)); \ return; \ } \ } @@ -351,6 +377,12 @@ main_loop (void) uint8_t timer_count = main_timer_wait (); if (main_stats_timer_) proto_send1b('M', timer_count); + if (timer_count == 1) + { + /* Main timer has reached overflow earlier! + We are late and this is really bad. */ + TRACE (TRACE_MAIN_TIMER__LATE); + } } /* Get the data from the UART */ diff --git a/digital/io/src/trace.trc b/digital/io/src/trace.trc index 7f3e68c1..adfe8df3 100644 --- a/digital/io/src/trace.trc +++ b/digital/io/src/trace.trc @@ -1,3 +1,6 @@ -EVENT asserv__retransmit seq 1 "Asserv[0x%02x]: retransmiting" -EVENT asserv__send seq 1 cmd 1 "Asserv[0x%02x]: sending: !%c" -EVENT asserv__last_status_ack seq 1 status 1 "Asserv[0x%02x]: status: %x" +EVENT asserv__retransmit seq 1 "Asserv[0x%02x]: retransmiting." +EVENT asserv__send seq 1 cmd 1 "Asserv[0x%02x]: sending: !%c." +EVENT asserv__last_status_ack seq 1 status 1 "Asserv[0x%02x]: status: %x." +EVENT main_timer__late "MainTimer: we are late." +EVENT fsm__handle_event fsm 1 event 1 "FSM[%c]: handle event %o." +EVENT fsm__handle_timeout fsm 1 "FSM[%c]: handle timeout." -- cgit v1.2.3