summaryrefslogtreecommitdiffstats
path: root/source/ct-Bot/ct-Bot.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/ct-Bot/ct-Bot.h')
-rw-r--r--source/ct-Bot/ct-Bot.h272
1 files changed, 272 insertions, 0 deletions
diff --git a/source/ct-Bot/ct-Bot.h b/source/ct-Bot/ct-Bot.h
new file mode 100644
index 0000000..29b7010
--- /dev/null
+++ b/source/ct-Bot/ct-Bot.h
@@ -0,0 +1,272 @@
+/*
+ * c't-Sim - Robotersimulator fuer den c't-Bot
+ *
+ * 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.
+ *
+ */
+
+/*! @file ct-Bot.h
+ * @brief Demo-Hauptprogramm
+ * @author Benjamin Benz (bbe@heise.de)
+ * @date 26.12.05
+*/
+#ifndef CT_BOT_H_DEF
+#define CT_BOT_H_DEF
+
+#ifndef MMC_LOW_H_
+ #include "global.h" // denn in mmc-low.S sind typedefs unerwuenscht
+#endif
+
+/************************************************************
+* Module switches, to make code smaller if features are not needed
+************************************************************/
+//#define LOG_CTSIM_AVAILABLE /*!< Logging ueber das ct-Sim (PC und MCU) */
+//#define LOG_DISPLAY_AVAILABLE /*!< Logging ueber das LCD-Display (PC und MCU) */
+//#define LOG_UART_AVAILABLE /*!< Logging ueber UART (NUR für MCU) */
+#define LOG_STDOUT_AVAILABLE /*!< Logging auf die Konsole (NUR für PC) */
+
+
+#define LED_AVAILABLE /*!< LEDs for local control */
+
+#define IR_AVAILABLE /*!< Infrared Remote Control */
+#define RC5_AVAILABLE /*!< Key-Mapping for IR-RC */
+
+#define BOT_2_PC_AVAILABLE /*!< Soll der Bot mit dem PC kommunmizieren? */
+
+//#define TIME_AVAILABLE /*!< Gibt es eine Systemzeit im s und ms? */
+
+#define DISPLAY_AVAILABLE /*!< Display for local control */
+#define DISPLAY_REMOTE_AVAILABLE /*!< Sende LCD Anzeigedaten an den Simulator */
+#define DISPLAY_SCREENS_AVAILABLE /*!< Ermoeglicht vier verschiedene Screen */
+//#define DISPLAY_SCREEN_RESETINFO /*!< Zeigt auf Screen 4 Informationen ueber Resets an */
+//#define DISPLAY_ODOMETRIC_INFO /*!< Zeigt auf Screen 4 Positions- und Geschwindigkeitsdaten */
+//#define DISPLAY_REGELUNG_AVAILABLE 3 /*!< Zeigt Reglerdaten auf Screen 4, wenn SPEED_CONTROL_AVAILABLE gesetzt ist*/
+#define DISPLAY_MMC_INFO /*!< Zeigt auf Screen 4 die Daten der MMC-Karte an */
+//#define DISPLAY_BEHAVIOUR_AVAILABLE /*!< Anzeige der Verhalten im Display Screen 3, ersetzt Counteranzeige */
+#define DISPLAY_DYNAMIC_BEHAVIOUR_AVAILABLE /*!< Zustandsaenderungen der Verhalten sind direkt unter Umgehung der Puffervar sichtbar */
+#define MEASURE_MOUSE_AVAILABLE /*!< Geschwindigkeiten werden aus den Maussensordaten berechnet */
+//#define MEASURE_COUPLED_AVAILABLE /*!< Geschwindigkeiten werden aus Maus- und Encoderwerten ermittelt und gekoppelt */
+
+
+//#define WELCOME_AVAILABLE /*!< kleiner Willkommensgruss */
+
+#define ADC_AVAILABLE /*!< A/D-Converter */
+
+#define MAUS_AVAILABLE /*!< Maus Sensor */
+
+#define ENA_AVAILABLE /*!< Enable-Leitungen */
+#define SHIFT_AVAILABLE /*!< Shift Register */
+
+//#define TEST_AVAILABLE_ANALOG /*!< Sollen die LEDs die analoge Sensorwerte anzeigen */
+#define TEST_AVAILABLE_DIGITAL /*!< Sollen die LEDs die digitale Sensorwerte anzeigen */
+//#define TEST_AVAILABLE_MOTOR /*!< Sollen die Motoren ein wenig drehen */
+//#define TEST_AVAILABLE_COUNTER /*!< Gibt einen Endlos-Counter auf Screen 3 aus und aktiviert Screen 3 */
+//#define DOXYGEN /*!< Nur zum Erzeugen der Doku, wenn dieser schalter an ist, jammert der gcc!!! */
+
+#define BEHAVIOUR_AVAILABLE /*!< Nur wenn dieser Parameter gesetzt ist, exisitiert das Verhaltenssystem */
+
+#define MAP_AVAILABLE /*!< Aktiviere die Kartographie */
+
+//#define SPEED_CONTROL_AVAILABLE /*!< Aktiviert die Motorregelung */
+
+//#define SRF10_AVAILABLE /*!< Ultraschallsensor SRF10 vorhanden */
+
+#define MMC_AVAILABLE /*!< haben wir eine MMC/SD-Karte zur Verfuegung */
+#define MINI_FAT_AVAILABLE /*!< koennen wir sektoren in FAT-systemen finden */
+//#define MMC_VM_AVAILABLE /*!< Virtual Memory Management mit MMC / SD-Card oder PC-Emulation */
+/************************************************************
+* Some Dependencies!!!
+************************************************************/
+
+#ifdef DOXYGEN
+ #define PC /*!< Beim generieren der Doku alles anschalten */
+ #define MCU /*!< Beim generieren der Doku alles anschalten */
+ #define TEST_AVAILABLE_MOTOR /*!< Beim generieren der Doku alles anschalten */
+#endif
+
+
+#ifndef DISPLAY_AVAILABLE
+ #undef WELCOME_AVAILABLE
+ #undef DISPLAY_REMOTE_AVAILABLE
+ #undef DISPLAY_SCREENS_AVAILABLE
+ #undef DISPLAY_SCREEN_RESETINFO
+#endif
+
+#ifndef IR_AVAILABLE
+ #undef RC5_AVAILABLE
+#endif
+
+#ifndef MAUS_AVAILABLE
+ #undef MEASURE_MOUSE_AVAILABLE
+ #undef MEASURE_COUPLED_AVAILABLE
+#endif
+
+#ifdef PC
+ #ifndef DOXYGEN
+ #undef UART_AVAILABLE
+ #undef BOT_2_PC_AVAILABLE
+ #undef SRF10_AVAILABLE
+ #undef TWI_AVAILABLE
+ #undef SPEED_CONTROL_AVAILABLE // Deaktiviere die Motorregelung
+ #undef MMC_AVAILABLE
+ #endif
+
+ #define COMMAND_AVAILABLE /*!< High-Level Communication */
+ #undef DISPLAY_SCREEN_RESETINFO
+ #undef TEST_AVAILABLE_COUNTER
+#endif
+
+#ifdef MCU
+ #ifdef LOG_CTSIM_AVAILABLE
+ #define BOT_2_PC_AVAILABLE
+ #endif
+ #ifdef BOT_2_PC_AVAILABLE
+ #define UART_AVAILABLE /*!< Serial Communication */
+ #define COMMAND_AVAILABLE /*!< High-Level Communication */
+ #endif
+// #undef MAP_AVAILABLE
+#endif
+
+
+#ifdef TEST_AVAILABLE_MOTOR
+ #define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
+ #define TEST_AVAILABLE_DIGITAL /*!< Sollen die LEDs die digitale Sensorwerte anzeigen */
+#endif
+
+#ifdef TEST_AVAILABLE_DIGITAL
+ #define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
+ #undef TEST_AVAILABLE_ANALOG
+#endif
+
+#ifdef TEST_AVAILABLE_ANALOG
+ #define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
+#endif
+
+#ifdef TEST_AVAILABLE_COUNTER
+ #define TEST_AVAILABLE /*!< brauchen wir den Testkrams */
+ #define DISPLAY_SCREENS_AVAILABLE
+ #define DISPLAY_SCREEN_RESETINFO
+#endif
+
+#ifdef DISPLAY_ODOMETRIC_INFO
+ #undef DISPLAY_SCREEN_RESETINFO /*!< Wenn Odometrieinfos, dann keine Resetinfos */
+#endif
+
+#ifndef SPEED_CONTROL_AVAILABLE
+ #undef DISPLAY_REGELUNG_AVAILABLE
+#endif
+
+#ifdef LOG_UART_AVAILABLE
+ #define LOG_AVAILABLE
+#endif
+#ifdef LOG_CTSIM_AVAILABLE
+ #define LOG_AVAILABLE
+#endif
+#ifdef LOG_DISPLAY_AVAILABLE
+ #define LOG_AVAILABLE
+#endif
+#ifdef LOG_STDOUT_AVAILABLE
+ #define LOG_AVAILABLE
+#endif
+
+#ifndef MMC_AVAILABLE
+ #undef MINI_FAT_AVAILABLE
+ #ifdef MCU
+ #undef MMC_VM_AVAILABLE
+ #endif
+#endif
+
+#ifdef LOG_AVAILABLE
+ #ifdef PC
+ /* Auf dem PC gibts kein Logging ueber UART. */
+ #undef LOG_UART_AVAILABLE
+ #endif
+
+ #ifdef MCU
+ /* Mit Bot zu PC Kommunikation auf dem MCU gibts kein Logging ueber UART.
+ * Ohne gibts keine Kommunikation ueber ct-Sim.
+ */
+ #undef LOG_STDOUT_AVAILABLE /*!< MCU hat kein STDOUT */
+ #ifdef BOT_2_PC_AVAILABLE
+ #undef LOG_UART_AVAILABLE
+ #else
+ #undef LOG_CTSIM_AVAILABLE
+ #endif
+ #endif
+
+ /* Ohne Display gibts auch keine Ausgaben auf diesem. */
+ #ifndef DISPLAY_AVAILABLE
+ #undef LOG_DISPLAY_AVAILABLE
+ #endif
+
+ /* Logging aufs Display ist nur moeglich, wenn mehrere Screens
+ * unterstuetzt werden.
+ */
+ #ifndef DISPLAY_SCREENS_AVAILABLE
+ #undef LOG_DISPLAY_AVAILABLE
+ #endif
+
+ /* Es kann immer nur ueber eine Schnittstelle geloggt werden. */
+
+ #ifdef LOG_UART_AVAILABLE
+ #define UART_AVAILABLE
+ #undef LOG_CTSIM_AVAILABLE
+ #undef LOG_DISPLAY_AVAILABLE
+ #undef LOG_STDOUT_AVAILABLE
+ #endif
+
+ #ifdef LOG_CTSIM_AVAILABLE
+ #undef LOG_DISPLAY_AVAILABLE
+ #undef LOG_STDOUT_AVAILABLE
+ #endif
+
+ #ifdef LOG_DISPLAY_AVAILABLE
+ #undef LOG_STDOUT_AVAILABLE
+ #endif
+
+ // Wenn keine sinnvolle Log-Option mehr uebrig, loggen wir auch nicht
+ #ifndef LOG_CTSIM_AVAILABLE
+ #ifndef LOG_DISPLAY_AVAILABLE
+ #ifndef LOG_UART_AVAILABLE
+ #ifndef LOG_STDOUT_AVAILABLE
+ #undef LOG_AVAILABLE
+ #endif
+ #endif
+ #endif
+ #endif
+
+#endif
+
+
+#ifdef SRF10_AVAILABLE
+ #define TWI_AVAILABLE /*!< TWI-Schnittstelle (I2C) nutzen */
+#endif
+
+
+#define F_CPU 16000000L /*!< Crystal frequency in Hz */
+#define XTAL F_CPU /*!< Crystal frequency in Hz */
+
+#define LINE_FEED "\n\r" /*!< Windows und Linux unterscheiden beim Linefeed. Windows erwarten \n\r, Linux nur \n */
+
+#ifdef MCU
+ #ifndef MMC_LOW_H_
+ #include <avr/interrupt.h>
+ #endif
+ #ifdef SIGNAL
+ #define NEW_AVR_LIB
+ #endif
+#endif
+
+#endif