From f61eb900879fe941460a284ff9e4681b0958b944 Mon Sep 17 00:00:00 2001 From: sicarius Date: Mon, 26 Feb 2007 21:25:01 +0000 Subject: SoccerTeam, Stuff from Magdeburg --- .../modules/interpreter/command_handler.c | 170 ++++++++++++++++++++- 1 file changed, 168 insertions(+), 2 deletions(-) (limited to 'source/Concept/Framework/modules/interpreter/command_handler.c') diff --git a/source/Concept/Framework/modules/interpreter/command_handler.c b/source/Concept/Framework/modules/interpreter/command_handler.c index 7d8937b..e2a9ba2 100644 --- a/source/Concept/Framework/modules/interpreter/command_handler.c +++ b/source/Concept/Framework/modules/interpreter/command_handler.c @@ -3,6 +3,7 @@ //----------------------------------------------------------------------------- void Command_Handler::Update() { + Display* ourDisplay = parent->GetModule(IO_DISPLAY_MAIN); Keyboard* ourKeyboard = parent->GetModule(IO_KEYBOARD_MAIN); uint8 curInput = ourKeyboard->GetInput(); @@ -13,11 +14,20 @@ void Command_Handler::Update() if(curInput == 10) { ExecuteCommand(); + + for(uint8 i = 0; i < this->currentCommandLength; i++) + { + this->buffer[i] = NULL; + ourDisplay->Print(" ", i + 1, 1); + } + + this->currentCommandLength = 0; } else if(curInput == 11) { if(this->currentCommandLength > 0) { + ourDisplay->Print(" ", this->currentCommandLength, 1); this->currentCommandLength--; this->buffer[currentCommandLength] = NULL; } @@ -28,6 +38,7 @@ void Command_Handler::Update() { this->buffer[this->currentCommandLength] = curInput; this->currentCommandLength++; + ourDisplay->Print(curInput, this->currentCommandLength, 1); } } @@ -38,8 +49,163 @@ void Command_Handler::Update() //----------------------------------------------------------------------------- void Command_Handler::ExecuteCommand() { - if(this->buffer[0] == 5) + if(this->buffer[0] == 1) + { + if(this->buffer[1] == 1) + { + this->displayDistanceSensors = true; + this->displayPositionTracker = false; + this->displayBallTracker = false; + this->displayMouseSensors = false; + } + else if(this->buffer[1] == 2) + { + this->displayDistanceSensors = false; + this->displayPositionTracker = true; + this->displayBallTracker = false; + this->displayMouseSensors = false; + } + else if(this->buffer[1] == 3) + { + this->displayDistanceSensors = false; + this->displayPositionTracker = false; + this->displayBallTracker = true; + this->displayMouseSensors = false; + } + else if(this->buffer[1] == 4) + { + this->displayDistanceSensors = false; + this->displayPositionTracker = false; + this->displayBallTracker = false; + this->displayMouseSensors = true; + } + else if(this->buffer[1] == 0) + { + this->displayDistanceSensors = false; + this->displayPositionTracker = false; + this->displayBallTracker = false; + this->displayMouseSensors = false; + } + } + else if(this->buffer[0] == 2) + { + Logic* ourLogic = parent->GetModule(IO_LOGIC_MAIN); + if(this->buffer[1] == 1) + { + ourLogic->SetKeeper(true); + } + else if(this->buffer[1] == 2) + { + ourLogic->SetKeeper(false); + } + } + else if(this->buffer[0] == 3) + { + if(this->buffer[1] == 1) + { + Navigator* ourNavigator = parent->GetModule(IO_NAVIGATOR_MAIN); + ourNavigator->RotateTo(180, 200); + } + else if(this->buffer[1] == 2) + { + Aktuator* ourAktuator = parent->GetModule(IO_AKTUATOR_MAIN); + ourAktuator->Kick(); + } + else if(this->buffer[1] == 3) + { + Navigator* ourNavigator = parent->GetModule(IO_NAVIGATOR_MAIN); + ourNavigator->RotateTo(float(buffer[2]) * 100.0f + float(buffer[3]) * 10.0f + float(buffer[4]), 200); + } + else if(this->buffer[1] == 4) + { + Mouse_Sensor* ourLeftMouse = parent->GetModule(IO_SENSOR_MOUSE_LEFT); + Mouse_Sensor* ourRightMouse = parent->GetModule(IO_SENSOR_MOUSE_RIGHT); + + this->ticksPerCmOffset += 2.5f; + ourLeftMouse->AdjustPositionX(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourLeftMouse->AdjustPositionY(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourRightMouse->AdjustPositionX(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourRightMouse->AdjustPositionY(3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + } + else if(this->buffer[1] == 5) + { + Mouse_Sensor* ourLeftMouse = parent->GetModule(IO_SENSOR_MOUSE_LEFT); + Mouse_Sensor* ourRightMouse = parent->GetModule(IO_SENSOR_MOUSE_RIGHT); + + this->ticksPerCmOffset -= 2.5f; + ourLeftMouse->AdjustPositionX(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourLeftMouse->AdjustPositionY(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourRightMouse->AdjustPositionX(-3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + ourRightMouse->AdjustPositionY(3.88f * (TICKS_PER_CM + this->ticksPerCmOffset)); + } + } + else if(this->buffer[0] == 4) + { + Navigator* ourNavigator = parent->GetModule(IO_NAVIGATOR_MAIN); + int16 speed = 200; + switch(this->buffer[1]) + { + case 1: + ourNavigator->Drive(225, 0, speed, 0); + break; + case 2: + ourNavigator->Drive(180, 0, speed, 0); + break; + case 3: + ourNavigator->Drive(135, 0, speed, 0); + break; + case 4: + ourNavigator->Drive(270, 0, speed, 0); + break; + case 5: + ourNavigator->Rotate(DEFAULT_ROTATION_SPEED); + break; + case 6: + ourNavigator->Drive(90, 0, speed, 0); + break; + case 7: + ourNavigator->Drive(315, 0, speed, 0); + break; + case 8: + ourNavigator->Drive(0, 0, speed, 0); + break; + case 9: + ourNavigator->Drive(45, 0, speed, 0); + break; + case 0: + ourNavigator->Stop(); + break; + } + } + else if(this->buffer[0] == 5) + { + Position_Tracker* ourPositionTracker = parent->GetModule(IO_POSITION_TRACKER_MAIN); + if(this->buffer[1] == 1) + { + ourPositionTracker->SetPosition(float(), ourPositionTracker->GetPositionY(), ourPositionTracker->GetOrientation()); + } + else if(this->buffer[1] == 0) + { + ourPositionTracker->SetPosition(0, 0, 0); + } + } + else if(this->buffer[0] == 6) + { + if(this->buffer[1] == 1) + { + Wireless* ourWireless = parent->GetModule(IO_WIRELESS_MAIN); + ourWireless->Send("Heyho!"); + } + } +} + +//----------------------------------------------------------------------------- +void Command_Handler::PrintCommand() +{ + Display* ourDisplay = parent->GetModule(IO_DISPLAY_MAIN); + + for(uint8 i = 0; i < currentCommandLength; i++) { - this->displayDistanceSensors = true; + ourDisplay->Print(this->buffer[i], i + 1, 1); } } -- cgit v1.2.3