From 666bccd44d3061f6e8a140b96f68e25d444357de Mon Sep 17 00:00:00 2001 From: Jérémy Dufour Date: Wed, 23 Apr 2008 13:31:54 +0200 Subject: * digital/io/src/test - add common file to put all the functions for host (yerk) ; - update gutter test program to make it work. --- digital/io/src/test/common.host.c | 154 ++++++++++++++++++++++++++++++++++++ digital/io/src/test/gutter/Makefile | 15 ++-- digital/io/src/test/gutter/main.c | 74 ++--------------- 3 files changed, 171 insertions(+), 72 deletions(-) create mode 100644 digital/io/src/test/common.host.c diff --git a/digital/io/src/test/common.host.c b/digital/io/src/test/common.host.c new file mode 100644 index 00000000..c6586e58 --- /dev/null +++ b/digital/io/src/test/common.host.c @@ -0,0 +1,154 @@ +/* common.c */ +/* {{{ + * + * Copyright (C) 2008 Dufour Jérémy + * + * 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. + * + * }}} */ + +#include "common.h" +#include "../giboulee.h" + +#include + +static uint16_t asserv_arm_position = 0; + +/* Yerk export */ +enum team_color_e bot_color = RED_TEAM; + +/* Define functions for debug */ +void +trap_setup_path_to_box (uint8_t box_id) +{ + printf ("[trap] Configure trap doors to open %d.\n", box_id); +} + +void +trap_close_rear_panel (void) +{ + printf ("[trap] Closing rear panel.\n"); +} + +void +trap_open_rear_panel (void) +{ + printf ("[trap] Opening rear panel.\n"); +} + +void +asserv_move_linearly (int32_t distance) +{ + printf ("[asserv] Make the bot move linearly of %d mm.\n", distance); +} + +void +asserv_move_arm (uint16_t position, uint8_t speed) +{ + asserv_arm_position += position; + printf ("[asserv] Move arm at %d (speed: %d).\n", + asserv_arm_position, speed); +} + +void +asserv_close_input_hole (void) +{ + printf ("[asserv] Put the arm in front of the input hole.\n"); + asserv_move_arm (asserv_arm_position % + BOT_ARM_THIRD_ROUND, BOT_ARM_SPEED); +} + +uint16_t +asserv_get_arm_position (void) +{ + return asserv_arm_position; +} + +void +asserv_arm_set_position_reached (uint16_t position) +{ + printf ("[asserv] Arm notifier at position %d (we are at %d).\n", + position, asserv_arm_position); +} + +void +asserv_go_to_distributor (void) +{ + printf ("[asserv] Go to distributor.\n"); +} + +void +asserv_get_position (void *undef) +{ + printf ("[asserv] Asking position of the bot.\n"); +} + +void +asserv_goto (uint32_t x, uint32_t y) +{ + printf ("[asserv] Move the bot to (%d; %d).\n", x, y); +} + +void +asserv_goto_angle (int16_t angle) +{ + printf ("[asserv] Move the bot to face %X.\n", angle); +} + +void +asserv_set_x_position (int32_t x) +{ + printf ("[asserv] Set X position to %d.\n", x); +} + +void +asserv_set_y_position (int32_t y) +{ + printf ("[asserv] Set Y position to %d.\n", y); +} + +void +asserv_set_angle_position (int16_t a) +{ + printf ("[asserv] Set angle position to %d.\n", a); +} + +void +asserv_set_position (int32_t x, int32_t y, int16_t a) +{ + printf ("[asserv] Set bot position to (%d, %d, %d).\n", x, y, a); +} + +void +asserv_go_to_the_wall (void) +{ + printf ("[asserv] Go to the wall.\n"); +} + +void +chrono_init (void) +{ + printf ("[chrono] Chrono init.\n"); +} + +void +gutter_start (void) +{ + printf ("[FSM:gutter] Start the gutter FSM\n"); +} diff --git a/digital/io/src/test/gutter/Makefile b/digital/io/src/test/gutter/Makefile index 80f77d82..fb829dc8 100644 --- a/digital/io/src/test/gutter/Makefile +++ b/digital/io/src/test/gutter/Makefile @@ -1,10 +1,15 @@ BASE= ../../../../avr -HOST_PROGS = fsm +HOST_PROGS = gutter IOBASE = ../.. -fsm_SOURCES = main.c $(IOBASE)/fsm.c \ - $(IOBASE)/gutter_cb.c $(IOBASE)/gutter_fsm.c -MODULES = utils -CONFIGFILE = +gutter_SOURCES = main.c ../common.host.c $(IOBASE)/fsm.c \ + $(IOBASE)/gutter_cb.c $(IOBASE)/gutter_fsm.c $(IOBASE)/gutter.c \ + $(IOBASE)/getsamples_cb.c $(IOBASE)/getsamples_fsm.c $(IOBASE)/getsamples.c \ + $(IOBASE)/top.c $(IOBASE)/top_cb.c $(IOBASE)/top_fsm.c \ + $(IOBASE)/move.c $(IOBASE)/move_cb.c $(IOBASE)/move_fsm.c \ + $(IOBASE)/simu.host.c + +MODULES = +CONFIGFILE = $(IOBASE)/avrconfig.h # -O2 : speed # -Os : size OPTIMIZE = -O2 diff --git a/digital/io/src/test/gutter/main.c b/digital/io/src/test/gutter/main.c index 059f5f34..39acaf28 100644 --- a/digital/io/src/test/gutter/main.c +++ b/digital/io/src/test/gutter/main.c @@ -24,86 +24,26 @@ * }}} */ #include "common.h" #include "../../fsm.h" +#include "../../playground.h" #include -void -gutter_print_test (fsm_t *gutter) -{ - printf ("Machine state "); - - switch (gutter->state_current) - { - case GUTTER_STATE_IDLE: - printf ("IDLE"); - break; - case GUTTER_STATE_ROTATE_REAR_SIDE_TO_GUTTER: - printf ("ROTATE_REAR_SIDE_TO_GUTTER"); - break; - case GUTTER_STATE_GO_TO_THE_GUTTER_WALL: - printf ("GO_TO_THE_GUTTER_WALL"); - break; - case GUTTER_STATE_CLOSE_COLLECTOR: - printf ("CLOSE COLLECTOR"); - break; - case GUTTER_STATE_OPEN_COLLECTOR: - printf ("OPEN COLLECTOR"); - break; - default: - printf ("STATE_NB"); - } - printf ("\n"); -} - int main (void) { fsm_init (&gutter_fsm); - gutter_print_test (&gutter_fsm); fsm_handle_event (&gutter_fsm, GUTTER_EVENT_start); - // Request the main_loop to go to next state because the angle had - // been reached. - fsm_handle_event (&gutter_fsm, GUTTER_EVENT_rotation_done); - gutter_print_test (&gutter_fsm); + /* Move (angle here) command succeed */ + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_bot_move_succeed); - // Request the main_loop to go to next state because the angle had - // been reached. - fsm_handle_event (&gutter_fsm, GUTTER_EVENT_ready); - gutter_print_test (&gutter_fsm); + /* Move (go to the wall) command succeed */ + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_bot_move_succeed); - fsm_handle_event (&gutter_fsm, GUTTER_EVENT_collector_opened); - gutter_print_test (&gutter_fsm); - - fsm_handle_event (&gutter_fsm, GUTTER_EVENT_collector_closed); - gutter_print_test (&gutter_fsm); + /* We have wait enough time for the all the balls to falls */ + fsm_handle_event (&gutter_fsm, GUTTER_EVENT_wait_finished); return 0; } -void -trap_open_rear_panel (void) -{ - printf ("\t Open rear panel\n"); -} - -void -trap_close_rear_panel(void) -{ - printf ("\t Close rear panel\n"); -} - -void -asserv_goto_angle (int16_t angle) -{ - printf ("\t Angle requested\n"); -} - -/* Go to the wall (moving backward). */ -void -asserv_go_to_the_wall (void) -{ - printf ("\t go to the wall\n"); -} - -- cgit v1.2.3