+++ added soccer robot framework

This commit is contained in:
masterm 2007-01-14 18:07:03 +00:00
parent f2e4b847be
commit d22cf4b33b
15 changed files with 542 additions and 0 deletions

View file

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="Concept"
ProjectGUID="{556125BE-937F-4A2B-89C7-B086575BE0F0}"
RootNamespace="Concept"
Keyword="ManagedCProj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
ManagedExtensions="TRUE">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
PreprocessorDefinitions="WIN32;_DEBUG"
MinimalRebuild="FALSE"
BasicRuntimeChecks="0"
RuntimeLibrary="1"
WarningLevel="3"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="2"
GenerateDebugInformation="TRUE"
AssemblyDebug="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="2"
ManagedExtensions="TRUE">
<Tool
Name="VCCLCompilerTool"
PreprocessorDefinitions="WIN32;NDEBUG"
MinimalRebuild="FALSE"
RuntimeLibrary="0"
WarningLevel="3"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
OutputFile="$(OutDir)\$(ProjectName).exe"
LinkIncremental="1"
GenerateDebugInformation="TRUE"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath=".\main.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
RelativePath=".\defines.h">
</File>
<File
RelativePath=".\stdafx.h">
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter>
<Filter
Name="Modules"
Filter="">
<Filter
Name="IO_Module"
Filter="">
<Filter
Name="Source Files"
Filter="">
<File
RelativePath=".\io_module.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="">
<File
RelativePath=".\io_module.h">
</File>
</Filter>
</Filter>
<Filter
Name="Engine"
Filter="">
<Filter
Name="Source Files"
Filter="">
<File
RelativePath=".\engine.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="">
<File
RelativePath=".\engine.h">
</File>
</Filter>
</Filter>
<Filter
Name="Robot"
Filter="">
<Filter
Name="Source Files"
Filter="">
<File
RelativePath=".\robot.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="">
<File
RelativePath=".\robot.h">
</File>
</Filter>
</Filter>
<Filter
Name="Sensor"
Filter="">
<Filter
Name="Source Files"
Filter="">
<File
RelativePath=".\sensor.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="">
<File
RelativePath=".\sensor.h">
</File>
</Filter>
</Filter>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

91
source/Concept/defines.h Normal file
View file

@ -0,0 +1,91 @@
#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

View file

@ -0,0 +1 @@
#include "engine.h"

19
source/Concept/engine.h Normal file
View file

@ -0,0 +1,19 @@
#ifndef _ENGINE_H
#define _ENGINE_H
#include "stdafx.h"
class Engine : public IO_Module
{
public:
Engine()
{
}
Engine(uint32 engineId)
{
this->moduleId = engineId;
}
};
#endif

View file

@ -0,0 +1 @@
#include "io_module.h"

View file

@ -0,0 +1,29 @@
#ifndef _MODULE_H
#define _MODULE_H
#include "defines.h"
class IO_Module
{
public:
IO_Module(uint32 moduleId)
{
this->moduleId = moduleId;
}
IO_Module(){}
protected:
uint32 moduleId;
public:
uint32 GetId()
{
return moduleId;
}
};
#endif

47
source/Concept/main.cpp Normal file
View file

@ -0,0 +1,47 @@
#include "stdafx.h"
int main()
{
//Init our robot
Robot* localRobot = new Robot();
//Init Engines
for(uint8 i = IO_ENGINE_START; i < IO_ENGINE_END; i++)
{
Engine* newEngine = new Engine(i);
localRobot->AddModule(newEngine);
newEngine = NULL;
}
//Init Sensors
for(uint8 i = IO_SENSOR_START; i < IO_SENSOR_END; i++)
{
SensorTypes newSensorType;
switch(i)
{
//Cases when sensor is digital:
// newSensorType = SENSOR_TYPE_DIGITAL;
// break;
//Other cases
default:
newSensorType = SENSOR_TYPE_ANALOG;
break;
}
Sensor* newSensor = new Sensor(i, newSensorType);
localRobot->AddModule(newSensor);
newSensor = NULL;
}
//Run
while(true)
{
localRobot->Update();
}
//Cleanup
delete localRobot;
localRobot = NULL;
}

View file

0
source/Concept/module.h Normal file
View file

37
source/Concept/robot.cpp Normal file
View file

@ -0,0 +1,37 @@
#include "robot.h"
//-----------------------------------------------------------------------------
Robot::~Robot()
{
while(!modules.empty())
{
moduleMap::iterator iter = modules.begin();
delete iter->second;
modules.erase(iter);
}
}
//-----------------------------------------------------------------------------
bool Robot::AddModule(IO_Module* newModule)
{
moduleMap::iterator itr = modules.find(newModule->GetId());
if(itr != modules.end())
return false;
modules[newModule->GetId()] = newModule;
return true;
}
//-----------------------------------------------------------------------------
bool Robot::RemoveModule(IO_Module* oldModule)
{
return RemoveModule(oldModule->GetId());
}
//-----------------------------------------------------------------------------
void Robot::Update()
{
//insert code here
}
//--- EOF ---

46
source/Concept/robot.h Normal file
View file

@ -0,0 +1,46 @@
#ifndef _ROBOT_H
#define _ROBOT_H
#include "stdafx.h"
class IO_Module;
class Sensor;
class Engine;
class Robot
{
public:
~Robot();
private:
typedef hash_map<uint32, IO_Module*> moduleMap;
moduleMap modules;
public:
bool AddModule(IO_Module* newModule);
template <class T> T* GetModule(uint32 moduleId)
{
moduleMap::const_iterator itr = modules.find(moduleId);
if(itr == modules.end())
return NULL;
else
return ((T*)itr->second);
}
bool RemoveModule(uint32 moduleId)
{
moduleMap::iterator itr = modules.find(moduleId);
if(itr == modules.end())
return false;
modules.erase(itr);
return true;
}
bool RemoveModule(IO_Module* oldModule);
void Update();
};
#endif

View file

@ -0,0 +1 @@
#include "sensor.h"

29
source/Concept/sensor.h Normal file
View file

@ -0,0 +1,29 @@
#ifndef _SENSOR_H
#define _SENSOR_H
#include "stdafx.h"
class Sensor : public IO_Module
{
public:
Sensor()
{
}
Sensor(uint32 sensorId, SensorTypes sensorType)
{
this->moduleId = sensorId;
this->sensorType = sensorType;
}
protected:
SensorTypes sensorType;
public:
SensorTypes GetType()
{
return sensorType;
}
};
#endif

12
source/Concept/stdafx.h Normal file
View file

@ -0,0 +1,12 @@
#include <iostream>
#include <stdlib.h>
#include <string>
#include <hash_map>
using namespace std;
#include "defines.h"
#include "io_module.h"
#include "sensor.h"
#include "engine.h"
#include "robot.h"

21
source/RoboCode.sln Normal file
View file

@ -0,0 +1,21 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Concept", "Concept\Concept.vcproj", "{556125BE-937F-4A2B-89C7-B086575BE0F0}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
Release = Release
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{556125BE-937F-4A2B-89C7-B086575BE0F0}.Debug.ActiveCfg = Debug|Win32
{556125BE-937F-4A2B-89C7-B086575BE0F0}.Debug.Build.0 = Debug|Win32
{556125BE-937F-4A2B-89C7-B086575BE0F0}.Release.ActiveCfg = Release|Win32
{556125BE-937F-4A2B-89C7-B086575BE0F0}.Release.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection
GlobalSection(ExtensibilityAddIns) = postSolution
EndGlobalSection
EndGlobal