
#define SPEED_FWD 254
#define SPEED_RWD 254
#define SPEED_TURN 254
#define DAUER_STOP 500
#define DAUER_SIG 100
#define BATTERIE_LOW 850
#define MOWER_SPEED 249

#define TIME_START_HOUR 05
#define TIME_START_MINUTE 00
#define TIME_STOP_HOUR 23
#define TIME_STOP_MINUTE 00

#define BATTERY_REFRESH_SECONDS 20

#define CYCLES_GET_TIME 60
#define CYCLES_CHANGE_ANGLE 500

#define ANGLE_MIN_SMALL 1
#define ANGLE_MAX_SMALL 3
#define ANGLE_MIN_LARGE 3
#define ANGLE_MAX_LARGE 5

#define ODO_MAX_DIFF 20
#define ODO_BACK_LEAVING_LOOP 6
#define ODO_BACK_DEFAULT 6

#define MODUS_VORWAERTS 0
#define MODUS_RUECKWAERTS 1
#define MODUS_DREHEN_RECHTS 2
#define MODUS_DREHEN_LINKS 3

#define ACTION_DEFAULT 0
#define ACTION_GO_HOME 1
#define ACTION_PARK 2
#define ACTION_LOAD_WAIT 3
#define ACTION_LEAVE_STATION 4

int IS_STARTED = 1;
int DAUER_VERZOEGERUNG = 100;

//Methodendeklaration
void Rueckwaerts(void); 
void Vorwaerts(void); 
void Stop(); 
void lcd_int(int value); 
void lcd_uint(unsigned int value) ;
void lcd_long(long value) ;
void Reset(int *odoLeft, int *odoRight) ;
void MemoriseState(char *value, char *state) ;
int IsError(char *value, int *Modus, int odoLeft, int odoRight, int isAussenVorn, int Bat, int Action, int *foundLoop) ;
void WriteSpeed(int bat,int odoLeft, int odoRight,char line[17]);
void WriteModus(char *value, int cyc, char line[17]) ;
void WriteClock(char line[17]);
void WritePINS(int isAussenVorn,int isTasteVorn, int IsInPowerStation, int IsCharged, int HaveSeenIR, char line[17]);
void Drehen(void);
void Drehen2(void);
int GetWinkel(int isKleinerWinkel) ;
int GetAction (int IsSleepingTime, int IsInPowerStation, int HaveSeenIR, int IsBatterieLow,int IsCharged, int Action, char line[17]);
int GetBattery(void);

