summaryrefslogtreecommitdiff
path: root/usb-i2c-sl018
diff options
context:
space:
mode:
authorOthmar Gsenger <otti@wirdorange.org>2013-02-06 23:49:17 +0000
committerOthmar Gsenger <otti@wirdorange.org>2013-02-06 23:49:17 +0000
commitbfeeb49eb96e02ab8b6d6e5c22cf8ddb15d093a1 (patch)
treef7c7f5c93d8439a00044eff58bde54e13725a25e /usb-i2c-sl018
parentrenamed limits_none to moving (diff)
statemachine enhanced
git-svn-id: https://svn.spreadspace.org/avr/trunk@154 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018')
-rw-r--r--usb-i2c-sl018/statemachine.c35
1 files changed, 31 insertions, 4 deletions
diff --git a/usb-i2c-sl018/statemachine.c b/usb-i2c-sl018/statemachine.c
index bb12e83..659749d 100644
--- a/usb-i2c-sl018/statemachine.c
+++ b/usb-i2c-sl018/statemachine.c
@@ -52,7 +52,7 @@ void change_state(state_t new_state)
state = new_state;
}
-void statemachine_task(void)
+void statemachine_task_limits(void)
{
limits_t limits = limits_get();
if (limits == both)
@@ -69,15 +69,42 @@ void statemachine_task(void)
return change_state(closing);
}
case closed:
- case closing:
case opened:
- case opening:
+ switch(limits) {
+ case open:
+ return change_state(opened);
+ case close:
+ return change_state(closed);
+ default:
+ return change_state(manual_movement);
+ }
+ case manual_movement:
case timeout_after_open:
case timeout_after_close:
+ case closing:
+ case opening:
+ switch(limits) {
+ case open:
+ return change_state(opened);
+ case close:
+ return change_state(closed);
+ default:
+ return;
+ }
case error:
- case manual_movement:
break;
}
+}
+
+void statemachine_task_cmd(void)
+{
+ event_t event = eventqueue_pop();
}
+void statemachine_task(void)
+{
+ statemachine_task_limits();
+ statemachine_task_cmd();
+}
+