summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJérémy Dufour2008-04-23 13:31:54 +0200
committerJérémy Dufour2008-04-23 13:31:54 +0200
commit666bccd44d3061f6e8a140b96f68e25d444357de (patch)
tree5b5fa3bd2f6da39c1354d296d08740fe0fb89293
parentb37be4dc387ff573c5d6baca14472a56c682c537 (diff)
* digital/io/src/test
- add common file to put all the functions for host (yerk) ; - update gutter test program to make it work.
-rw-r--r--digital/io/src/test/common.host.c154
-rw-r--r--digital/io/src/test/gutter/Makefile15
-rw-r--r--digital/io/src/test/gutter/main.c74
3 files changed, 171 insertions, 72 deletions
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 <stdio.h>
+
+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 <stdio.h>
-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");
-}
-