From a27b805823ca746466cafd831332a5b0f00b6ce3 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Tue, 1 May 2012 23:19:09 +0200 Subject: digital/io-hub: add FSM debug step mode --- digital/ai/tools/test_simu_control_guybrush.py | 5 +++++ digital/io-hub/src/guybrush/main.c | 12 ++++++++++++ digital/io-hub/tools/io_hub/io_hub.py | 3 +++ 3 files changed, 20 insertions(+) diff --git a/digital/ai/tools/test_simu_control_guybrush.py b/digital/ai/tools/test_simu_control_guybrush.py index adf27a85..407648dc 100644 --- a/digital/ai/tools/test_simu_control_guybrush.py +++ b/digital/ai/tools/test_simu_control_guybrush.py @@ -50,6 +50,8 @@ class TestSimuControl (TestSimu): self.control_frame = Frame (self) self.control_frame.pack (side = 'left', before = self.table_view, fill = 'y') + Button (self.control_frame, text = 'FSM step', padx = 0, pady = 0, + command = self.fsm_debug).pack () def out_button (name, toggle): def command (): self.io.output (toggle, 'toggle') @@ -86,6 +88,9 @@ class TestSimuControl (TestSimu): self.table_view.bind ('<1>', self.move) self.table_view.bind ('<3>', self.orient) + def fsm_debug (self): + self.io.fsm_debug () + def move (self, ev): pos = self.table_view.screen_coord ((ev.x, ev.y)) if self.goto_var.get (): diff --git a/digital/io-hub/src/guybrush/main.c b/digital/io-hub/src/guybrush/main.c index f2d8d4e7..63305103 100644 --- a/digital/io-hub/src/guybrush/main.c +++ b/digital/io-hub/src/guybrush/main.c @@ -71,6 +71,9 @@ vect_t main_obstacles_pos[2]; /** Number of obstacles in main_obstacles_pos. */ uint8_t main_obstacles_nb; +/** FSM debug mode activated if 1, step authorized if 2. */ +uint8_t main_fsm_debug_mode; + /** Asserv stats counters. */ static uint8_t main_stats_asserv_, main_stats_asserv_cpt_; @@ -130,6 +133,11 @@ main_event_to_fsm (void) do { if (FSM_HANDLE_TIMEOUT (fsm)) return; } while (0) /* Update FSM timeouts. */ FSM_HANDLE_TIMEOUT_E (AI); + /* Abort if debuging. */ + if (main_fsm_debug_mode == 1) + return; + if (main_fsm_debug_mode == 2) + main_fsm_debug_mode--; /* Motor status. */ asserv_status_e robot_move_status, mimot_motor0_status, mimot_motor1_status; @@ -241,6 +249,10 @@ proto_callback (uint8_t cmd, uint8_t size, uint8_t *args) /* Simulate jack insertion. */ fsm_queue_post_event (FSM_EVENT (AI, jack_inserted)); break; + case c ('f', 0): + /* Enter FSM debug mode, then step once. */ + main_fsm_debug_mode = 2; + break; case c ('m', 5): /* Go to position. * - 2w: x, y. diff --git a/digital/io-hub/tools/io_hub/io_hub.py b/digital/io-hub/tools/io_hub/io_hub.py index bf65b199..6623a346 100644 --- a/digital/io-hub/tools/io_hub/io_hub.py +++ b/digital/io-hub/tools/io_hub/io_hub.py @@ -40,6 +40,9 @@ class Proto: self.proto.send ('z') self.proto.send ('z') + def fsm_debug (self): + self.proto.send ('f') + def pwm_set (self, index, value): self.proto.send ('w', 'Bh', index, value) -- cgit v1.2.3