From bd653ce716c5002aaf79b88cf3934e2f51e6ff07 Mon Sep 17 00:00:00 2001 From: Nélio Laranjeiro Date: Sun, 30 Mar 2008 23:31:17 +0200 Subject: Tested the fsm in host mode. - to compile it modify the asserv.h file to replace the intx_t by uintx_t - stub the necessary functions. --- digital/io/src/test/testgetsamples/Makefile | 2 +- digital/io/src/test/testgetsamples/avrconfig.h | 95 ++++++++++++++++++++++++++ digital/io/src/test/testgetsamples/main.c | 80 ++++++++++++++++++---- 3 files changed, 163 insertions(+), 14 deletions(-) create mode 100644 digital/io/src/test/testgetsamples/avrconfig.h (limited to 'digital/io/src/test') diff --git a/digital/io/src/test/testgetsamples/Makefile b/digital/io/src/test/testgetsamples/Makefile index ad659fdd..b0a3a7a3 100644 --- a/digital/io/src/test/testgetsamples/Makefile +++ b/digital/io/src/test/testgetsamples/Makefile @@ -1,4 +1,4 @@ -BASE= .. +BASE= ../.. 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 diff --git a/digital/io/src/test/testgetsamples/avrconfig.h b/digital/io/src/test/testgetsamples/avrconfig.h new file mode 100644 index 00000000..c4d9f159 --- /dev/null +++ b/digital/io/src/test/testgetsamples/avrconfig.h @@ -0,0 +1,95 @@ +#ifndef avrconfig_h +#define avrconfig_h +/* avrconfig.h */ +/* avr.spi - SPI AVR module. {{{ + * + * Copyright (C) 2008 Nélio Laranjeiro + * + * APBTeam: + * Web: http://apbteam.org/ + * Email: team AT apbteam DOT org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * }}} */ + +/* global */ +/** AVR Frequency : 1000000, 1843200, 2000000, 3686400, 4000000, 7372800, + * 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 33a3fd80..4e156e05 100644 --- a/digital/io/src/test/testgetsamples/main.c +++ b/digital/io/src/test/testgetsamples/main.c @@ -22,33 +22,31 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * }}} */ -#define uint32_t (unsigned int) -#define uint16_t (unsigned short) -#define uint8_t (unsigned char) +#include "common.h" +#include "modules/proto/proto.h" +#include "modules/utils/utils.h" -#include "../getsamples.h" -#include "../getsamples_robo.h" - -#include +#include "../../getsamples.h" +#include "../../getsamples_robo.h" void getsamples_print_test (getsamples_t *getsamples) { - printf ("Machine state "); - + printf ("STATE "); switch (getsamples->fsm) { case GETSAMPLES_STATE_START: printf ("START"); + break; case GETSAMPLES_STATE_PREPARE_ARM: - printf ("PREPARE_ARM"); + printf ("PREPEARE_ARM"); break; case GETSAMPLES_STATE_END: printf ("END"); break; case GETSAMPLES_STATE_FORWARD_CONTROL: - printf ("FORWARD CONTROL"); + printf ("FORWARD_CONTROL"); break; case GETSAMPLES_STATE_TAKE_SAMPLES: printf ("TAKE_SAMPLES"); @@ -57,10 +55,10 @@ getsamples_print_test (getsamples_t *getsamples) printf ("BACKWARD"); break; case GETSAMPLES_STATE_GO_TO_POSITION: - printf ("GO TO POSITION"); + printf ("GO_TO_POSITION"); break; case GETSAMPLES_STATE_NB: - printf ("NB"); + printf ("STATE_NB"); } printf ("\n"); } @@ -73,6 +71,15 @@ main (void) getsamples_init (&getsamples_fsm); getsamples_print_test (&getsamples_fsm); + getsamples_fsm.distributor_x = 700; + getsamples_fsm.distributor_y = 2100; + getsamples_fsm.samples = 3; + + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_ok); + + getsamples_print_test (&getsamples_fsm); + getsamples_handle_event (&getsamples_fsm, GETSAMPLES_EVENT_position_failed); @@ -84,5 +91,52 @@ main (void) getsamples_print_test (&getsamples_fsm); + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_arm_moved); + + + getsamples_print_test (&getsamples_fsm); + + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_position_reached); + + getsamples_print_test (&getsamples_fsm); + + for (getsamples_fsm.samples--; getsamples_fsm.samples; getsamples_fsm.samples --) + { + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_sample_took); + + getsamples_print_test (&getsamples_fsm); + } + + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_sample_took); + + getsamples_print_test (&getsamples_fsm); + + getsamples_handle_event (&getsamples_fsm, + GETSAMPLES_EVENT_position_reached); + + getsamples_print_test (&getsamples_fsm); + return 0; } + +void +asserv_set_x_position (uint32_t position) +{ + printf ("X position : %d\n", position); +} + +void +asserv_move_arm (uint16_t position, uint8_t speed) +{ + printf ("Move arm, position : %d, speed : %d\n", position, speed); +} + +void +asserv_set_y_position (int32_t y) +{ + printf ("Y position : %d\n", y); +} -- cgit v1.2.3