+++ implemented command handler
This commit is contained in:
parent
e51f1c2038
commit
b18e19bee5
8 changed files with 132 additions and 12 deletions
|
@ -453,6 +453,24 @@
|
||||||
</File>
|
</File>
|
||||||
</Filter>
|
</Filter>
|
||||||
</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>
|
||||||
<Filter
|
<Filter
|
||||||
Name="Hardware Interface"
|
Name="Hardware Interface"
|
||||||
|
|
|
@ -67,6 +67,8 @@
|
||||||
|
|
||||||
#define BALL_HELD_INTENSITY 900
|
#define BALL_HELD_INTENSITY 900
|
||||||
|
|
||||||
|
#define COMMAND_BUFFER_SIZE 20
|
||||||
|
|
||||||
#define WIRELESS_CODE "SPASS!"
|
#define WIRELESS_CODE "SPASS!"
|
||||||
enum WirelessCommands
|
enum WirelessCommands
|
||||||
{
|
{
|
||||||
|
@ -165,9 +167,17 @@ enum IOModuleNames
|
||||||
|
|
||||||
IO_KEYBOARD_END,
|
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
|
//Position Tracker
|
||||||
|
|
||||||
IO_POSITION_TRACKER_START = IO_KEYBOARD_END,
|
IO_POSITION_TRACKER_START = IO_COMMAND_HANDLER_END,
|
||||||
|
|
||||||
IO_POSITION_TRACKER_MAIN,
|
IO_POSITION_TRACKER_MAIN,
|
||||||
|
|
||||||
|
|
|
@ -122,6 +122,14 @@ int main()
|
||||||
newKeyboard = NULL;
|
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
|
//Init Position Tracker
|
||||||
for(uint8 i = IO_POSITION_TRACKER_START; i < IO_POSITION_TRACKER_END; i++)
|
for(uint8 i = IO_POSITION_TRACKER_START; i < IO_POSITION_TRACKER_END; i++)
|
||||||
{
|
{
|
||||||
|
@ -168,7 +176,7 @@ int main()
|
||||||
uint16 value = 0;
|
uint16 value = 0;
|
||||||
int8 value2 = 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;
|
uint32 i = 1;
|
||||||
Navigator* ourNavigator = localRobot->GetModule<Navigator>(IO_NAVIGATOR_MAIN);
|
Navigator* ourNavigator = localRobot->GetModule<Navigator>(IO_NAVIGATOR_MAIN);
|
||||||
Position_Tracker* ourPosition_Tracker = localRobot->GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN);
|
Position_Tracker* ourPosition_Tracker = localRobot->GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN);
|
||||||
|
@ -194,7 +202,7 @@ int main()
|
||||||
|
|
||||||
//msleep(50);
|
//msleep(50);
|
||||||
|
|
||||||
if(!(i % 20))
|
if(ourCommandHandler->displayDistanceSensors && !(i % 20))
|
||||||
{
|
{
|
||||||
ourDisplay->Clear();
|
ourDisplay->Clear();
|
||||||
|
|
||||||
|
@ -216,12 +224,7 @@ int main()
|
||||||
ourDisplay->Print(";");
|
ourDisplay->Print(";");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!(i % 20))
|
/*uint8 someInput = ourKeyboard->GetInput();
|
||||||
{
|
|
||||||
//ourAktuator->Kick();
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8 someInput = ourKeyboard->GetInput();
|
|
||||||
//ourDisplay->Print("Ready to accept...", 1, 2);
|
//ourDisplay->Print("Ready to accept...", 1, 2);
|
||||||
switch(someInput)
|
switch(someInput)
|
||||||
{
|
{
|
||||||
|
@ -262,7 +265,7 @@ int main()
|
||||||
case 12:
|
case 12:
|
||||||
ourLogic->SetKeeper(true); // Reset Position_Tracker
|
ourLogic->SetKeeper(true); // Reset Position_Tracker
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
//ourDisplay->Clear();
|
//ourDisplay->Clear();
|
||||||
if(!(i % 20))
|
if(!(i % 20))
|
||||||
|
|
|
@ -234,8 +234,6 @@ void Navigator::CalculateEngines()
|
||||||
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vBack,10,3);
|
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vBack,10,3);
|
||||||
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vRight,10,4);
|
//(parent->GetModule<Display>(IO_DISPLAY_MAIN))->Print(vRight,10,4);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Transfer the values to the engines
|
// Transfer the values to the engines
|
||||||
Engine* curEngine = parent->GetModule<Engine>(IO_ENGINE_DRIVE_LEFT);
|
Engine* curEngine = parent->GetModule<Engine>(IO_ENGINE_DRIVE_LEFT);
|
||||||
curEngine->SetSpeed(vLeft);
|
curEngine->SetSpeed(vLeft);
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -88,6 +88,8 @@ bool Robot::RemoveModule(IO_Module* oldModule)
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
void Robot::Update()
|
void Robot::Update()
|
||||||
{
|
{
|
||||||
|
GetModule<Command_Handler>(IO_COMMAND_HANDLER_MAIN)->Update();
|
||||||
|
|
||||||
GetModule<Ball_Tracker>(IO_BALL_TRACKER_MAIN)->Update();
|
GetModule<Ball_Tracker>(IO_BALL_TRACKER_MAIN)->Update();
|
||||||
|
|
||||||
GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN)->Update();
|
GetModule<Position_Tracker>(IO_POSITION_TRACKER_MAIN)->Update();
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#include "distance_sensor.h"
|
#include "distance_sensor.h"
|
||||||
#include "ir_sensor.h"
|
#include "ir_sensor.h"
|
||||||
#include "mouse_sensor.h"
|
#include "mouse_sensor.h"
|
||||||
|
#include "command_handler.h"
|
||||||
#include "position_tracker.h"
|
#include "position_tracker.h"
|
||||||
#include "ball_tracker.h"
|
#include "ball_tracker.h"
|
||||||
#include "navigator.h"
|
#include "navigator.h"
|
||||||
|
|
Reference in a new issue