#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
	#endif
#endif

#ifndef int16
	#ifdef __int16
		#define int16 __int16
	#else
		#define int16 int
	#endif
#endif

#ifndef int32
	#ifdef __int32
		#define int32 __int32
	#else
		#define int32 long
	#endif
#endif

#ifndef int64
	#ifdef __int64
		#define int64 __int64
	#else
		#define int64 long long
	#endif
#endif

//Unsigned
#ifndef uint8
#define uint8 unsigned int8
#endif

#ifndef uint16
#define uint16 unsigned int16
#endif

#ifndef uint32
#define uint32 unsigned int32
#endif

#ifndef uint64
#define uint64 unsigned int64
#endif

//Sensor types
enum SensorTypes
{
	SENSOR_TYPE_ANALOG, 
	SENSOR_TYPE_DIGITAL,
};

//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_END,
	
	//Sensors
	IO_SENSOR_START = IO_ENGINE_END,

	IO_SENSOR_MOUSE = IO_SENSOR_START,

	IO_SENSOR_END,

	//General
	IO_END = IO_SENSOR_END,
};

#endif
