diff --git a/src/Robot.cpp b/src/Robot.cpp index 36cef0c..6de81fa 100644 --- a/src/Robot.cpp +++ b/src/Robot.cpp @@ -62,6 +62,7 @@ private: left_drive.SetInverted(true); right_drive.SetInverted(true); inverting = false; + pickupRunning = false; shooter_power = 0; } @@ -156,7 +157,24 @@ private: { inverting = false; } - + + + /* + * Unlike the previous actions, this method does need to be called every itteration of + * TeleopPeriodic. This is because the logic running this operation needs to be checked + * Every time the method is called. This cannot be a loop in the Shoot method because + * that would lock the robot every time the trigger is hit. + */ + if(operator_stick.GetRawButton(TRIGGER)) + { + shooter.Shoot(); + } + else + { + shooter.StopShooter(); + } + + // This code will become obsolete after the Shooter logic is complete. float opThrottle = SaneThrottle(operator_stick.GetThrottle()); if( opThrottle > shooter_power + DEADZONE_RADIUS diff --git a/src/Shooter.h b/src/Shooter.h index f63bdf1..22e2eb8 100644 --- a/src/Shooter.h +++ b/src/Shooter.h @@ -10,18 +10,23 @@ #define PICKUP_POWER 1.0 -class Shooter { +class Shooter +{ public: + /** * Shooter talons and launch-spinny talon. * s2 is also for the pickup-mechanism and can be controlled independently. * */ - Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r) { + Shooter(CANTalon *s1, CANTalon *s2, CANTalon *r) + { // shooterDrive = new RobotDrive(s1, s2); launcher = s1; pickup = s2; launch_spinny = r; + ready = true; + shotClock = Timer(); } /** @@ -29,13 +34,35 @@ public: * set at the beginning of the match. */ - virtual ~Shooter() { + virtual ~Shooter() + { delete launcher; delete pickup; delete launch_spinny; } - - void PickUp(bool state = true) { + + void StopShooter() + { + ready = true; + launch_spinny.Set(0); + launcher.Set(0); + pickup.Set(0); + } + + void Shoot() + { + // TODO: Shooter Logic should go as follows: + + /* + Assuming a ball is held in the shooter. When the trigger is pulled, + the launch-spinny should be STOPPED. Start a Timer object counting + When... too hard to write.. I emailed you a flow chart. + */ + + } + + void PickUp(bool state = true) + { pickup->Set((float) (state * PICKUP_POWER)); launch_spinny->Set(-1.0*PICKUP_POWER); std::cout << "picking up!\n"; @@ -49,17 +76,21 @@ public: pickup->Set(-1 * PICKUP_POWER); } - void SetPower(float power) { + void SetPower(float power) + { pickup->Set(power); launcher->Set(power); std::cout << "setting shooter power" << std::endl; } private: - RobotDrive *shooterDrive; + //RobotDrive *shooterDrive; CANTalon *launcher; CANTalon *pickup; CANTalon *launch_spinny; + + Timer shotClock; + bool ready; }; #endif /* SRC_SHOOTER_H_ */