summaryrefslogtreecommitdiff
path: root/digital/io-hub/src/apbirthday/robot.cc
diff options
context:
space:
mode:
authorNicolas Schodet2013-03-21 21:20:18 +0100
committerNicolas Schodet2013-03-21 21:20:18 +0100
commit0c5ba0b879baa5291d35dd0a5028ab9a5d52560d (patch)
tree0d1dbc0a4c91776e3db686ba672755ba5dfa8bd8 /digital/io-hub/src/apbirthday/robot.cc
parentc9f14499885b3c087aa5b107156cc91b48917a7c (diff)
digital/io-hub/src/apbirthday: add FSM queue
Diffstat (limited to 'digital/io-hub/src/apbirthday/robot.cc')
-rw-r--r--digital/io-hub/src/apbirthday/robot.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/digital/io-hub/src/apbirthday/robot.cc b/digital/io-hub/src/apbirthday/robot.cc
index 4464013e..83a9928d 100644
--- a/digital/io-hub/src/apbirthday/robot.cc
+++ b/digital/io-hub/src/apbirthday/robot.cc
@@ -46,19 +46,27 @@ Robot::main_loop ()
// Wait until next cycle.
hardware.wait ();
// Handle communications.
- main_i2c_queue_.sync ();
+ bool sync = main_i2c_queue_.sync ();
+ // Handle events if synchronised.
+ if (sync)
+ fsm_gen_event ();
// Handle commands.
dev_proto.accept ();
zb_proto.accept ();
usb_proto.accept ();
- // Handle events.
- fsm_gen_event ();
}
}
-void
+bool
Robot::fsm_gen_event ()
{
+ if (fsm_queue.poll ())
+ {
+ FsmQueue::Event event = fsm_queue.pop ();
+ if (ANGFSM_HANDLE_VAR (AI, event))
+ return true;
+ }
+ return false;
}
void