diff options
Diffstat (limited to 'usb-i2c-sl018/statemachine.c')
-rw-r--r-- | usb-i2c-sl018/statemachine.c | 22 |
1 files changed, 15 insertions, 7 deletions
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; } } |