Move code in Shooter.h to a .cpp file

which is where it belongs. Grumble grumble
This commit is contained in:
Adam Goldsmith 2016-03-15 21:16:03 -04:00
parent 6574401dff
commit eaf240eb62
3 changed files with 169 additions and 153 deletions

View File

@ -11,12 +11,12 @@ all: deploy
build: FRCUserProgram build: FRCUserProgram
FRCUserProgram: src/Robot.cpp FRCUserProgram: src/Robot.cpp src/Shooter.o
@echo "Building FRCUserProgram" @echo "Building FRCUserProgram"
$(CXX) $(CPPFLAGS) $< -o $@ $(LDFLAGS) $(CXX) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
clean: clean:
rm FRCUserProgram rm FRCUserProgram src/Shooter.o
deploy: build deploy: build
@echo "Copying FRCUserProgram" @echo "Copying FRCUserProgram"

151
src/Shooter.cpp Normal file
View File

@ -0,0 +1,151 @@
#include <WPILib.h>
#include "Shooter.h"
Shooter::Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r) :
launcher(s1),
pickup(s2),
ramp(r),
ready(true),
state(READY)
{
// shooterDrive = new RobotDrive(s1, s2);
}
/**
* Call this method on TeleopInit so that the ramp is properly
* set at the beginning of the match.
*/
Shooter::~Shooter()
{
delete launcher;
delete pickup;
delete ramp;
}
void Shooter::StopShooter()
{
ready = true;
ramp->Set(0);
launcher->Set(0);
pickup->Set(0);
}
void Shooter::LowerRamp()
{
ramp->Set(-RAMP_POWER);
if(ramp->Limits::kReverseLimit){
SmartDashboard::PutNumber("ramp", 2); //going to put a circlar dial to show where the ramp could be
} else {
SmartDashboard::PutNumber("ramp", 1);
}
}
void Shooter::RaiseRamp()
{
ramp->Set(RAMP_POWER);
if(ramp->Limits::kForwardLimit){
SmartDashboard::PutNumber("ramp", 0); //going to put a circlar dial to show where the ramp could be
} else {
SmartDashboard::PutNumber("ramp", 1);
}
}
void Shooter::StopRamp()
{
ramp->Set(0);
}
void Shooter::Shoot()
{
if (shotClock.Get() > (SPINUP_TIME + 0.1))
{
state = RESETTING;
}
switch (state)
{
case READY:
{
state = SPINNINGUP;
ramp->Set(-1);
launcher->Set(LAUNCH_POWER);
pickup->Set(LAUNCH_POWER);
shotClock.Reset();
shotClock.Start();
break;
}
case SPINNINGUP:
{
if (shotClock.Get() > SPINUP_TIME)
{
state = LAUNCH;
shotClock.Reset();
shotClock.Start();
} else
{
//std::cout << "*Goku noises*\n";
}
break;
}
case LAUNCH:
{
ramp->Set(LAUNCH_POWER);
state = LAUNCHING;
break;
}
case LAUNCHING:
{
if (shotClock.Get() > LAUNCH_TIME)
{
state = RESETTING;
}
break;
}
case RESETTING:
{
ramp->Set(0);
launcher->Set(0);
pickup->Set(0);
state = READY;
break;
}
case ON_FIRE:
{
std::cout << "Something is wrong with the launch sequence.\n";
break;
}
}
}
void Shooter::PickUp(bool state /*= true*/)
{
pickup->Set((float) (state * PICKUP_POWER));
launcher->Set((float) (state * PICKUP_POWER * -1));
//std::cout << "picking up!\n";
}
/**
* Call this to run the pickup backwards if the ball gets jammed somehow...
*/
void Shooter::Unjam()
{
pickup->Set(-1 * PICKUP_POWER);
}
void Shooter::ShootLow()
{
pickup->Set(-1);
}
void Shooter::SetPower(float power)
{
pickup->Set(power);
launcher->Set(power);
//std::cout << "setting shooter power" << std::endl;
}
int Shooter::GetState()
{
return state;
}

View File

@ -14,7 +14,7 @@
#define LAUNCH_TIME 0.5 #define LAUNCH_TIME 0.5
#define RAMP_POWER 0.3 #define RAMP_POWER 0.3
class Shooter class Shooter
{ {
public: public:
@ -33,154 +33,19 @@ public:
RESETTING RESETTING
}; };
Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r) Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r);
{ virtual ~Shooter();
// shooterDrive = new RobotDrive(s1, s2); void StopShooter();
launcher = s1; void LowerRamp();
pickup = s2; void RaiseRamp();
ramp = r; void StopRamp();
ready = true; void Shoot();
state = READY; void PickUp(bool state = true);
} void Unjam();
void ShootLow();
void SetPower(float power);
int GetState();
/**
* Call this method on TeleopInit so that the ramp is properly
* set at the beginning of the match.
*/
virtual ~Shooter()
{
delete launcher;
delete pickup;
delete ramp;
}
void StopShooter()
{
ready = true;
ramp->Set(0);
launcher->Set(0);
pickup->Set(0);
}
void LowerRamp()
{
ramp->Set(-RAMP_POWER);
if(ramp->Limits::kReverseLimit){
SmartDashboard::PutNumber("ramp", 2); //going to put a circlar dial to show where the ramp could be
} else {
SmartDashboard::PutNumber("ramp", 1);
}
}
void RaiseRamp()
{
ramp->Set(RAMP_POWER);
if(ramp->Limits::kForwardLimit){
SmartDashboard::PutNumber("ramp", 0); //going to put a circlar dial to show where the ramp could be
} else {
SmartDashboard::PutNumber("ramp", 1);
}
}
void StopRamp()
{
ramp->Set(0);
}
void Shoot()
{
if (shotClock.Get() > (SPINUP_TIME + 0.1))
{
state = RESETTING;
}
switch (state)
{
case READY:
{
state = SPINNINGUP;
ramp->Set(-1);
launcher->Set(LAUNCH_POWER);
pickup->Set(LAUNCH_POWER);
shotClock.Reset();
shotClock.Start();
break;
}
case SPINNINGUP:
{
if (shotClock.Get() > SPINUP_TIME)
{
state = LAUNCH;
shotClock.Reset();
shotClock.Start();
} else
{
//std::cout << "*Goku noises*\n";
}
break;
}
case LAUNCH:
{
ramp->Set(LAUNCH_POWER);
state = LAUNCHING;
break;
}
case LAUNCHING:
{
if (shotClock.Get() > LAUNCH_TIME)
{
state = RESETTING;
}
break;
}
case RESETTING:
{
ramp->Set(0);
launcher->Set(0);
pickup->Set(0);
state = READY;
break;
}
case ON_FIRE:
{
std::cout << "Something is wrong with the launch sequence.\n";
break;
}
}
}
void PickUp(bool state = true)
{
pickup->Set((float) (state * PICKUP_POWER));
launcher->Set((float) (state * PICKUP_POWER * -1));
//std::cout << "picking up!\n";
}
/**
* Call this to run the pickup backwards if the ball gets jammed somehow...
*/
void Unjam()
{
pickup->Set(-1 * PICKUP_POWER);
}
void ShootLow()
{
pickup->Set(-1);
}
void SetPower(float power)
{
pickup->Set(power);
launcher->Set(power);
//std::cout << "setting shooter power" << std::endl;
}
int GetState()
{
return state;
}
private: private:
//RobotDrive *shooterDrive; //RobotDrive *shooterDrive;
@ -188,8 +53,8 @@ private:
CANTalon *pickup; CANTalon *pickup;
CANTalon *ramp; CANTalon *ramp;
ShooterState state; ShooterState state;
Timer shotClock; Timer shotClock;
bool ready; bool ready;
int fake_position; int fake_position;
}; };