diff options
author | Christian Pointner <equinox@spreadspace.org> | 2013-02-07 01:34:05 +0000 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2013-02-07 01:34:05 +0000 |
commit | e528d8912601e151e2724176298e0365773b6b8e (patch) | |
tree | 5e6102f07c02d42db97fb48775a53470414ec05e /usb-i2c-sl018/statemachine.c | |
parent | added manual switch (diff) |
added to_string functions for events and states
git-svn-id: https://svn.spreadspace.org/avr/trunk@165 aa12f405-d877-488e-9caf-2d797e2a1cc7
Diffstat (limited to 'usb-i2c-sl018/statemachine.c')
-rw-r--r-- | usb-i2c-sl018/statemachine.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/usb-i2c-sl018/statemachine.c b/usb-i2c-sl018/statemachine.c index 77fb9cd..7719a23 100644 --- a/usb-i2c-sl018/statemachine.c +++ b/usb-i2c-sl018/statemachine.c @@ -32,11 +32,27 @@ typedef enum state_enum {reset, closed, closing, opened, opening, timeout_after_open, timeout_after_close, error, manual_movement} state_t; state_t state = reset; +const char* state_to_string(state_t s) +{ + switch(s) { + case reset: return "reset"; + case error: return "error"; + case closing: return "closing"; + case opening: return "opening"; + case manual_movement: return "manual movement"; + case timeout_after_open: return "timeout after open"; + case timeout_after_close: return "timeout after close"; + case closed: return "closed"; + case opened: return "opened"; + } + return "invalid"; // gcc - shut the fuck up!!! +} + void change_state(state_t new_state) { if (new_state == state) return; - printf("state: %d\n\r",new_state); + printf("state: %s\n\r", state_to_string(new_state)); switch(new_state) { case reset: break; @@ -121,12 +137,12 @@ void statemachine_task_event(void) 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); + printf("Error: event %s not allowed in state %s\n\r", event_to_string(event), state_to_string(state)); return; } case reset: case error: - printf("Error: Not accepting commands in state %d\n\r",state); + printf("Error: Not accepting commands in state %s\n\r", state_to_string(state)); break; // Not accepting commands case manual_movement: case timeout_after_open: @@ -150,7 +166,7 @@ void statemachine_task_event(void) case open_fin: case close_fin: case move_timeout: - printf("Error: event %d not allowed in state %d\n\r", event, state); + printf("Error: event %s not allowed in state %s\n\r", event_to_string(event), state_to_string(state)); return; } } @@ -163,3 +179,7 @@ void statemachine_task(void) statemachine_task_event(); } +const char* statemachine_get_state_as_string(void) +{ + return state_to_string(state); +} |