#ifndef _DEFINES_H
#define _DEFINES_H
#ifndef NULL
#define NULL 0
#endif
//Integer definition
#ifndef int8
#ifdef __int8
#define int8 __int8
#else
#define int8 char
#ifndef int16
#ifdef __int16
#define int16 __int16
#define int16 int
#ifndef int32
#ifdef __int32
#define int32 __int32
#define int32 long
#ifndef int64
#ifdef __int64
#define int64 __int64
#define int64 long long
//Unsigned
#ifndef uint8
#define uint8 unsigned int8
#ifndef uint16
#define uint16 unsigned int16
#ifndef uint32
#define uint32 unsigned int32
#ifndef uint64
#define uint64 unsigned int64
//Constants
#define SPEED_PER_PWM 1
//IO Module Names
enum IOModuleNames
{
//General
IO_START,
//Engines
IO_ENGINE_START = IO_START,
IO_ENGINE_DRIVE_LEFT = IO_ENGINE_START,
IO_ENGINE_DRIVE_RIGHT,
IO_ENGINE_DRIVE_BACK,
IO_ENGINE_DRIBBLER,
IO_ENGINE_END,
//Kicker
IO_KICKER_START = IO_ENGINE_END,
IO_KICKER_MAIN = IO_KICKER_START,
IO_KICKER_END,
//Sensors
IO_SENSOR_START = IO_KICKER_END,
IO_SENSOR_IR_0_DEG = IO_SENSOR_START,
IO_SENSOR_IR_30_DEG,
IO_SENSOR_IR_60_DEG,
IO_SENSOR_IR_100_DEG,
IO_SENSOR_IR_180_DEG,
IO_SENSOR_IR_260_DEG,
IO_SENSOR_IR_300_DEG,
IO_SENSOR_IR_330_DEG,
IO_SENSOR_END,
//Leds
IO_LED_START = IO_SENSOR_END,
IO_LED_MAIN = IO_LED_START,
IO_LED_END,
IO_END = IO_LED_END,
};