From 9d3573134462335051e46b990e97e1d32bef4b29 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Mon, 31 Mar 2008 13:03:47 +0200 Subject: * digital/io/src: - adapted FSM to AVR program. --- digital/io/src/test/gutter/Makefile | 17 ++++--- digital/io/src/test/gutter/main.c | 26 +++++------ digital/io/src/test/testgetsamples/Makefile | 17 ++++--- digital/io/src/test/testgetsamples/avrconfig.h | 64 +------------------------- digital/io/src/test/testgetsamples/main.c | 48 ++++++++----------- 5 files changed, 54 insertions(+), 118 deletions(-) (limited to 'digital/io/src/test') diff --git a/digital/io/src/test/gutter/Makefile b/digital/io/src/test/gutter/Makefile index 21470810..cd355139 100644 --- a/digital/io/src/test/gutter/Makefile +++ b/digital/io/src/test/gutter/Makefile @@ -1,7 +1,12 @@ -BASE= .. +BASE= ../../../../avr +HOST_PROGS = fsm +IOBASE = ../.. +fsm_SOURCES = main.c $(IOBASE)/fsm.c \ + $(IOBASE)/gutter_cb.c $(IOBASE)/gutter_fsm.c +MODULES = +CONFIGFILE = +# -O2 : speed +# -Os : size +OPTIMIZE = -O2 -all: main.c $(BASE)/gutter.c $(BASE)/gutter_cb.c - gcc -g -O2 -Wall main.c $(BASE)/gutter.c $(BASE)/gutter_cb.c -o fsm - -clean: fsm - rm -f fsm +include $(BASE)/make/Makefile.gen diff --git a/digital/io/src/test/gutter/main.c b/digital/io/src/test/gutter/main.c index 08be3342..41860461 100644 --- a/digital/io/src/test/gutter/main.c +++ b/digital/io/src/test/gutter/main.c @@ -22,17 +22,18 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ -#include "../gutter.h" -#include "../gutter_robo.h" +#include "common.h" + +#include "../../fsm.h" #include void -gutter_print_test (gutter_t *gutter) +gutter_print_test (fsm_t *gutter) { printf ("Machine state "); - switch (gutter->fsm) + switch (gutter->state_current) { case GUTTER_STATE_END: printf ("END"); @@ -55,28 +56,25 @@ gutter_print_test (gutter_t *gutter) int main (void) { - gutter_t gutter_fsm; + fsm_init (&gutter_fsm); + + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_ok); - gutter_init (&gutter_fsm); gutter_print_test (&gutter_fsm); - gutter_handle_event (&gutter_fsm, - GUTTER_EVENT_position_failed); + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_position_failed); gutter_print_test (&gutter_fsm); - gutter_handle_event (&gutter_fsm, - GUTTER_EVENT_position_reached); + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_position_reached); gutter_print_test (&gutter_fsm); - gutter_handle_event (&gutter_fsm, - GUTTER_EVENT_collector_opened); + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_collector_opened); gutter_print_test (&gutter_fsm); - gutter_handle_event (&gutter_fsm, - GUTTER_EVENT_collector_closed); + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_collector_closed); gutter_print_test (&gutter_fsm); diff --git a/digital/io/src/test/testgetsamples/Makefile b/digital/io/src/test/testgetsamples/Makefile index b0a3a7a3..21313ff6 100644 --- a/digital/io/src/test/testgetsamples/Makefile +++ b/digital/io/src/test/testgetsamples/Makefile @@ -1,7 +1,12 @@ -BASE= ../.. +BASE= ../../../../avr +HOST_PROGS = fsm +IOBASE = ../.. +fsm_SOURCES = main.c $(IOBASE)/fsm.c $(IOBASE)/getsamples.c \ + $(IOBASE)/getsamples_cb.c $(IOBASE)/getsamples_fsm.c +MODULES = +CONFIGFILE = +# -O2 : speed +# -Os : size +OPTIMIZE = -O2 -all: main.c $(BASE)/getsamples.c $(BASE)/getsamples_cb.c - gcc -g -O2 -Wall main.c $(BASE)/getsamples.c $(BASE)/getsamples_cb.c -o fsm - -clean: fsm - rm -f fsm +include $(BASE)/make/Makefile.gen diff --git a/digital/io/src/test/testgetsamples/avrconfig.h b/digital/io/src/test/testgetsamples/avrconfig.h index c4d9f159..d6afb3d3 100644 --- a/digital/io/src/test/testgetsamples/avrconfig.h +++ b/digital/io/src/test/testgetsamples/avrconfig.h @@ -1,7 +1,7 @@ #ifndef avrconfig_h #define avrconfig_h /* avrconfig.h */ -/* avr.spi - SPI AVR module. {{{ +/* io - Input & Output with Artificial Intelligence (ai) support on AVR. {{{ * * Copyright (C) 2008 NĂ©lio Laranjeiro * @@ -30,66 +30,4 @@ * 8000000, 11059200, 14745600, 16000000, 18432000, 20000000. */ #define AC_FREQ 14745600 -/* uart - UART module. */ -/** Select hardware uart for primary uart: 0, 1 or -1 to disable. */ -#define AC_UART0_PORT 1 -/** Baudrate: 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 76800, - * 115200, 230400, 250000, 500000, 1000000. */ -#define AC_UART0_BAUDRATE 38400 -/** Send mode: - * - POLLING: no interrupts. - * - RING: interrupts, ring buffer. */ -#define AC_UART0_SEND_MODE POLLING -/** Recv mode, same as send mode. */ -#define AC_UART0_RECV_MODE POLLING -/** Character size: 5, 6, 7, 8, 9 (only 8 implemented). */ -#define AC_UART0_CHAR_SIZE 8 -/** Parity : ODD, EVEN, NONE. */ -#define AC_UART0_PARITY EVEN -/** Stop bits : 1, 2. */ -#define AC_UART0_STOP_BITS 1 -/** Send buffer size, should be power of 2 for RING mode. */ -#define AC_UART0_SEND_BUFFER_SIZE 32 -/** Recv buffer size, should be power of 2 for RING mode. */ -#define AC_UART0_RECV_BUFFER_SIZE 32 -/** If the send buffer is full when putc: - * - DROP: drop the new byte. - * - WAIT: wait until there is room in the send buffer. */ -#define AC_UART0_SEND_BUFFER_FULL WAIT -/** In HOST compilation: - * - STDIO: use stdin/out. - * - PTS: use pseudo terminal. */ -#define AC_UART0_HOST_DRIVER STDIO -/** Same thing for secondary port. */ -#define AC_UART1_PORT -1 -#define AC_UART1_BAUDRATE 115200 -#define AC_UART1_SEND_MODE RING -#define AC_UART1_RECV_MODE RING -#define AC_UART1_CHAR_SIZE 8 -#define AC_UART1_PARITY EVEN -#define AC_UART1_STOP_BITS 1 -#define AC_UART1_SEND_BUFFER_SIZE 32 -#define AC_UART1_RECV_BUFFER_SIZE 32 -#define AC_UART1_SEND_BUFFER_FULL WAIT -#define AC_UART1_HOST_DRIVER PTS - -/* proto - Protocol module. */ -/** Maximum argument size. */ -#define AC_PROTO_ARGS_MAX_SIZE 8 -/** Callback function name. */ -#define AC_PROTO_CALLBACK proto_callback -/** Putchar function name. */ -#define AC_PROTO_PUTC uart0_putc -/** Support for quote parameter. */ -#define AC_PROTO_QUOTE 1 - -/* flash - Flash SPI AVR module. */ -/** Flash PORT used. */ -#define AC_FLASH_PORT PORTD -/** Flash DDR used. */ -#define AC_FLASH_DDR DDRD -/** Flash SS pin. */ -#define AC_FLASH_BIT_SS 5 - - #endif /* avrconfig_h */ diff --git a/digital/io/src/test/testgetsamples/main.c b/digital/io/src/test/testgetsamples/main.c index 4e156e05..4479b053 100644 --- a/digital/io/src/test/testgetsamples/main.c +++ b/digital/io/src/test/testgetsamples/main.c @@ -24,17 +24,16 @@ * }}} */ #include "common.h" -#include "modules/proto/proto.h" -#include "modules/utils/utils.h" - +#include "../../fsm.h" #include "../../getsamples.h" -#include "../../getsamples_robo.h" + +#include void -getsamples_print_test (getsamples_t *getsamples) +getsamples_print_test (fsm_t *getsamples) { printf ("STATE "); - switch (getsamples->fsm) + switch (getsamples->state_current) { case GETSAMPLES_STATE_START: printf ("START"); @@ -66,57 +65,48 @@ getsamples_print_test (getsamples_t *getsamples) int main (void) { - getsamples_t getsamples_fsm; - - getsamples_init (&getsamples_fsm); + fsm_init (&getsamples_fsm); getsamples_print_test (&getsamples_fsm); - getsamples_fsm.distributor_x = 700; - getsamples_fsm.distributor_y = 2100; - getsamples_fsm.samples = 3; + getsamples_start (700, 2100, 3); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_ok); + /* Implicit: + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_ok); */ getsamples_print_test (&getsamples_fsm); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_position_failed); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_position_failed); getsamples_print_test (&getsamples_fsm); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_position_reached); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_position_reached); getsamples_print_test (&getsamples_fsm); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_arm_moved); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_arm_moved); getsamples_print_test (&getsamples_fsm); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_position_reached); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_position_reached); getsamples_print_test (&getsamples_fsm); - for (getsamples_fsm.samples--; getsamples_fsm.samples; getsamples_fsm.samples --) + //TODO: samples should be decremented by the FSM transitions. + for (getsamples_data.samples--; getsamples_data.samples; + getsamples_data.samples--) { - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_sample_took); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_sample_took); getsamples_print_test (&getsamples_fsm); } - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_sample_took); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_sample_took); getsamples_print_test (&getsamples_fsm); - getsamples_handle_event (&getsamples_fsm, - GETSAMPLES_EVENT_position_reached); + fsm_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_position_reached); getsamples_print_test (&getsamples_fsm); -- cgit v1.2.3