From bfeeb49eb96e02ab8b6d6e5c22cf8ddb15d093a1 Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Wed, 6 Feb 2013 23:49:17 +0000 Subject: statemachine enhanced git-svn-id: https://svn.spreadspace.org/avr/trunk@154 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/statemachine.c | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) (limited to 'usb-i2c-sl018/statemachine.c') 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(); +} + -- cgit v1.2.3