From 048e16a12bf926cc122899dd96f1ba34fb5d7912 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 7 Feb 2013 00:51:15 +0000 Subject: fixed state machine git-svn-id: https://svn.spreadspace.org/avr/trunk@163 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/statemachine.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'usb-i2c-sl018/statemachine.c') diff --git a/usb-i2c-sl018/statemachine.c b/usb-i2c-sl018/statemachine.c index 9a43385..77fb9cd 100644 --- a/usb-i2c-sl018/statemachine.c +++ b/usb-i2c-sl018/statemachine.c @@ -98,12 +98,8 @@ void statemachine_task_limits(void) return; } case closing: - if(limits == close) - return change_state(closed); break; case opening: - if(limits == open) - return change_state(opened); break; } } @@ -117,9 +113,16 @@ void statemachine_task_event(void) switch(state) { case closing: case opening: - if(event==move_timeout) - { - return change_state(state==opening?timeout_after_open:timeout_after_close); + switch(event) { + case open_fin: + return change_state(opened); + case close_fin: + return change_state(closed); + case move_timeout: + return change_state(state==opening?timeout_after_open:timeout_after_close); + default: + printf("Error: event %d not allowed in state %d\n\r", event, state); + return; } case reset: case error: @@ -144,6 +147,11 @@ void statemachine_task_event(void) (state==closed || state == timeout_after_close) ? opening: closing); + case open_fin: + case close_fin: + case move_timeout: + printf("Error: event %d not allowed in state %d\n\r", event, state); + return; } } -- cgit v1.2.3