From e528d8912601e151e2724176298e0365773b6b8e Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 7 Feb 2013 01:34:05 +0000 Subject: added to_string functions for events and states git-svn-id: https://svn.spreadspace.org/avr/trunk@165 aa12f405-d877-488e-9caf-2d797e2a1cc7 --- usb-i2c-sl018/eventqueue.c | 15 +++++++++++++++ usb-i2c-sl018/eventqueue.h | 1 + usb-i2c-sl018/statemachine.c | 28 ++++++++++++++++++++++++---- usb-i2c-sl018/statemachine.h | 1 + usb-i2c-sl018/stepper.c | 2 +- usb-i2c-sl018/tuer-rfid.c | 18 +++++++++--------- 6 files changed, 51 insertions(+), 14 deletions(-) (limited to 'usb-i2c-sl018') diff --git a/usb-i2c-sl018/eventqueue.c b/usb-i2c-sl018/eventqueue.c index 53f60d5..305a823 100644 --- a/usb-i2c-sl018/eventqueue.c +++ b/usb-i2c-sl018/eventqueue.c @@ -44,3 +44,18 @@ void eventqueue_push(event_t event) RingBuffer_Insert(&event_queue,event); } +const char* event_to_string(event_t event) +{ + switch(event) { + case none: return "none"; + case cmd_open: return "cmd_open"; + case cmd_close: return "cmd_close"; + case cmd_toggle: return "cmd_toggle"; + case btn_toggle: return "btn_toggle"; + case card: return "card"; + case open_fin: return "open_fin"; + case close_fin: return "close_fin"; + case move_timeout: return "move_timeout"; + } + return "invalid"; // gcc - shut the fuck up!!! +} diff --git a/usb-i2c-sl018/eventqueue.h b/usb-i2c-sl018/eventqueue.h index fa2929b..35c1fa1 100644 --- a/usb-i2c-sl018/eventqueue.h +++ b/usb-i2c-sl018/eventqueue.h @@ -29,5 +29,6 @@ typedef enum { none, cmd_open, cmd_close, cmd_toggle, btn_toggle, card, close_fi void init_eventqueue(void); event_t eventqueue_pop(void); void eventqueue_push(event_t); +const char* event_to_string(event_t event); #endif 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); +} diff --git a/usb-i2c-sl018/statemachine.h b/usb-i2c-sl018/statemachine.h index 26e692b..90b478c 100644 --- a/usb-i2c-sl018/statemachine.h +++ b/usb-i2c-sl018/statemachine.h @@ -25,5 +25,6 @@ #define R3TUER_statemachine_h_INCLUDED void statemachine_task(void); +const char* statemachine_get_state_as_string(void); #endif diff --git a/usb-i2c-sl018/stepper.c b/usb-i2c-sl018/stepper.c index b4390c3..d2fd50f 100644 --- a/usb-i2c-sl018/stepper.c +++ b/usb-i2c-sl018/stepper.c @@ -55,7 +55,7 @@ inline void stop_stepper(void) TIMSK1 = 0; // disable timer interrupt } -inline uint8_t handle_step(void) +static inline uint8_t handle_step(void) { static uint8_t step_idx = 0; diff --git a/usb-i2c-sl018/tuer-rfid.c b/usb-i2c-sl018/tuer-rfid.c index 3e5b035..1ae51cc 100644 --- a/usb-i2c-sl018/tuer-rfid.c +++ b/usb-i2c-sl018/tuer-rfid.c @@ -77,15 +77,15 @@ void handle_stdio(uint8_t cmd) case 't': eventqueue_push(cmd_toggle); break; - case '0': ledmatrix(off); break; - case '1': ledmatrix(red); break; - case '2': ledmatrix(red_moving); break; - case '3': ledmatrix(red_blink); break; - case '4': ledmatrix(green); break; - case '5': ledmatrix(green_moving); break; - case '6': ledmatrix(green_blink); break; - case '7': ledmatrix(rg_moving); break; - case '8': ledmatrix(rg_blink); break; + /* case '0': ledmatrix(off); break; */ + /* case '1': ledmatrix(red); break; */ + /* case '2': ledmatrix(red_moving); break; */ + /* case '3': ledmatrix(red_blink); break; */ + /* case '4': ledmatrix(green); break; */ + /* case '5': ledmatrix(green_moving); break; */ + /* case '6': ledmatrix(green_blink); break; */ + /* case '7': ledmatrix(rg_moving); break; */ + /* case '8': ledmatrix(rg_blink); break; */ default: printf("error, unknown command %02X '%c'\n\r",cmd, cmd); return; } } -- cgit v1.2.3