summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormasterm <devnull@localhost>2007-02-23 00:37:00 +0100
committermasterm <devnull@localhost>2007-02-23 00:37:00 +0100
commitb18e19bee517d70d36c00f5561a075d46b0c20bd (patch)
tree150b4af23747a8ee7987aac3504dc80692450f5d
parente51f1c203897019ee5669e44d35cf1241514d442 (diff)
downloadrc2007-soccer-b18e19bee517d70d36c00f5561a075d46b0c20bd.tar
rc2007-soccer-b18e19bee517d70d36c00f5561a075d46b0c20bd.zip
+++ implemented command handler
-rw-r--r--source/Concept/Framework/Concept.vcproj18
-rw-r--r--source/Concept/Framework/defines.h12
-rwxr-xr-xsource/Concept/Framework/main.c21
-rwxr-xr-xsource/Concept/Framework/modules/executor/navigator.c2
-rw-r--r--source/Concept/Framework/modules/interpreter/command_handler.c45
-rw-r--r--source/Concept/Framework/modules/interpreter/command_handler.h43
-rwxr-xr-xsource/Concept/Framework/robot.c2
-rw-r--r--source/Concept/Framework/stdafx.h1
8 files changed, 132 insertions, 12 deletions
diff --git a/source/Concept/Framework/Concept.vcproj b/source/Concept/Framework/Concept.vcproj
index b06f1f4..cff37ad 100644
--- a/source/Concept/Framework/Concept.vcproj
+++ b/source/Concept/Framework/Concept.vcproj
@@ -453,6 +453,24 @@
</File>
</Filter>
</Filter>
+ <Filter
+ Name="Command_Handler"
+ Filter="">
+ <Filter
+ Name="Source Files"
+ Filter="">
+ <File
+ RelativePath=".\modules\interpreter\command_handler.c">
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="">
+ <File
+ RelativePath=".\modules\interpreter\command_handler.h">
+ </File>
+ </Filter>
+ </Filter>
</Filter>
<Filter
Name="Hardware Interface"
diff --git a/source/Concept/Framework/defines.h b/source/Concept/Framework/defines.h
index 9a7c12b..596126d 100644
--- a/source/Concept/Framework/defines.h
+++ b/source/Concept/Framework/defines.h
@@ -67,6 +67,8 @@
#define BALL_HELD_INTENSITY 900
+#define COMMAND_BUFFER_SIZE 20
+
#define WIRELESS_CODE "SPASS!"
enum WirelessCommands
{
@@ -165,9 +167,17 @@ enum IOModuleNames
IO_KEYBOARD_END,
+ //Command Handler
+
+ IO_COMMAND_HANDLER_START = IO_KEYBOARD_END,
+
+ IO_COMMAND_HANDLER_MAIN = IO_COMMAND_HANDLER_START,
+
+ IO_COMMAND_HANDLER_END,
+
//Position Tracker
- IO_POSITION_TRACKER_START = IO_KEYBOARD_END,
+ IO_POSITION_TRACKER_START = IO_COMMAND_HANDLER_END,
IO_POSITION_TRACKER_MAIN,
diff --git a/source/Concept/Framework/main.c b/source/Concept/Framework/main.c
index ffc4cc9..8f9c7a2 100755
--- a/source/Concept/Framework/main.c
+++ b/source/Concept/Framework/main.c
@@ -122,6 +122,14 @@ int main()
newKeyboard = NULL;
}
+ //Init Command Handler
+ for(uint8 i = IO_COMMAND_HANDLER_START; i < IO_COMMAND_HANDLER_END; i++)
+ {
+ Command_Handler* newCommandHandler = new Command_Handler(i);
+ localRobot->AddModule(newCommandHandler);
+ newCommandHandler = NULL;
+ }
+
//Init Position Tracker
for(uint8 i = IO_POSITION_TRACKER_START; i < IO_POSITION_TRACKER_END; i++)
{
@@ -168,7 +176,7 @@ int main()
uint16 value = 0;
int8 value2 = 0;
- Keyboard* ourKeyboard = localRobot->GetModule<Keyboard>(IO_KEYBOARD_MAIN);
+ Command_Handler* ourCommandHandler = localRobot->GetModule<Command_Handler>(IO_COMMAND_HANDLER_MAIN);
uint32 i = 1;
Navigator* ourNavigator = localRobot->GetModule<Navigator>(IO_NAVIGATOR_MAIN);
Position_Tracker* ourPosition_Tracker = localRobot->GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN);
@@ -194,7 +202,7 @@ int main()
//msleep(50);
- if(!(i % 20))
+ if(ourCommandHandler->displayDistanceSensors && !(i % 20))
{
ourDisplay->Clear();
@@ -215,13 +223,8 @@ int main()
ourDisplay->Print(value);
ourDisplay->Print(";");
}
-
- if(!(i % 20))
- {
- //ourAktuator->Kick();
- }
- uint8 someInput = ourKeyboard->GetInput();
+ /*uint8 someInput = ourKeyboard->GetInput();
//ourDisplay->Print("Ready to accept...", 1, 2);
switch(someInput)
{
@@ -262,7 +265,7 @@ int main()
case 12:
ourLogic->SetKeeper(true); // Reset Position_Tracker
break;
- }
+ }*/
//ourDisplay->Clear();
if(!(i % 20))
diff --git a/source/Concept/Framework/modules/executor/navigator.c b/source/Concept/Framework/modules/executor/navigator.c
index 023bf79..7c4618a 100755
--- a/source/Concept/Framework/modules/executor/navigator.c
+++ b/source/Concept/Framework/modules/executor/navigator.c
@@ -234,8 +234,6 @@ void Navigator::CalculateEngines()
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vBack,10,3);
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vRight,10,4);
-
-
// Transfer the values to the engines
Engine* curEngine = parent->GetModule<Engine>(IO_ENGINE_DRIVE_LEFT);
curEngine->SetSpeed(vLeft);
diff --git a/source/Concept/Framework/modules/interpreter/command_handler.c b/source/Concept/Framework/modules/interpreter/command_handler.c
new file mode 100644
index 0000000..dcd97b2
--- /dev/null
+++ b/source/Concept/Framework/modules/interpreter/command_handler.c
@@ -0,0 +1,45 @@
+#include "command_handler.h"
+
+//-----------------------------------------------------------------------------
+void Command_Handler::Update()
+{
+ Keyboard* ourKeyboard = parent->GetModule<Keyboard>(IO_KEYBOARD_MAIN);
+
+ uint8 curInput = ourKeyboard->GetInput();
+
+
+ while(curInput != 0xEE && curInput != 0xFF)
+ {
+ if(curInput == 10)
+ {
+ ExecuteCommand();
+ }
+ else if(curInput == 11)
+ {
+ if(this->currentCommandLength > 0)
+ {
+ this->currentCommandLength--;
+ this->buffer[currentCommandLength] = NULL;
+ }
+ }
+ else if(curInput >= 0 && curInput <= 9)
+ {
+ if(this->currentCommandLength < COMMAND_BUFFER_SIZE)
+ {
+ this->buffer[this->currentCommandLength] = '0' + curInput;
+ this->currentCommandLength++;
+ }
+ }
+
+ curInput = ourKeyboard->GetInput();
+ }
+}
+
+//-----------------------------------------------------------------------------
+void Command_Handler::ExecuteCommand()
+{
+ if(this->buffer[0] == '5')
+ {
+ this->displayDistanceSensors = true;
+ }
+}
diff --git a/source/Concept/Framework/modules/interpreter/command_handler.h b/source/Concept/Framework/modules/interpreter/command_handler.h
new file mode 100644
index 0000000..102797a
--- /dev/null
+++ b/source/Concept/Framework/modules/interpreter/command_handler.h
@@ -0,0 +1,43 @@
+#ifndef _COMMAND_HANDLER_H
+#define _COMMAND_HANDLER_H
+
+#include "../../stdafx.h"
+
+class Command_Handler : public IO_Module
+{
+public:
+ Command_Handler()
+ {
+ this->parent = NULL;
+ this->moduleId = 0;
+ this->currentCommandLength = 0;
+ this->displayDistanceSensors = false;
+ }
+
+ Command_Handler(uint32 commandHandlerId)
+ {
+ this->parent = NULL;
+ this->moduleId = commandHandlerId;
+ this->currentCommandLength = 0;
+ this->displayDistanceSensors = false;
+
+ for(uint8 i = 0; i < COMMAND_BUFFER_SIZE; i++)
+ {
+ buffer[i] = NULL;
+ }
+ }
+
+protected:
+ uint8 currentCommandLength;
+ char* buffer[COMMAND_BUFFER_SIZE];
+
+ void ExecuteCommand();
+
+public:
+ void Update();
+
+ //Command variables
+ bool displayDistanceSensors;
+};
+
+#endif
diff --git a/source/Concept/Framework/robot.c b/source/Concept/Framework/robot.c
index a630d4a..7653c61 100755
--- a/source/Concept/Framework/robot.c
+++ b/source/Concept/Framework/robot.c
@@ -88,6 +88,8 @@ bool Robot::RemoveModule(IO_Module* oldModule)
//-----------------------------------------------------------------------------
void Robot::Update()
{
+ GetModule<Command_Handler>(IO_COMMAND_HANDLER_MAIN)->Update();
+
GetModule<Ball_Tracker>(IO_BALL_TRACKER_MAIN)->Update();
GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN)->Update();
diff --git a/source/Concept/Framework/stdafx.h b/source/Concept/Framework/stdafx.h
index a4054e3..88d8c85 100644
--- a/source/Concept/Framework/stdafx.h
+++ b/source/Concept/Framework/stdafx.h
@@ -20,6 +20,7 @@
#include "distance_sensor.h"
#include "ir_sensor.h"
#include "mouse_sensor.h"
+#include "command_handler.h"
#include "position_tracker.h"
#include "ball_tracker.h"
#include "navigator.h"