mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-03 03:01:44 +00:00
Renamed folders for consistency, using sim/athena/shared schema (#27)
Rename the following folders: hal/lib/Athena -> hal/lib/athena hal/lib/Desktop -> hal/lib/sim hal/lib/Shared -> hal/lib/shared wpilibc/Athena -> wpilibc/athena wpilibc/simulation -> wpilibc/sim Windows users may need to run gradlew clean after updating.
This commit is contained in:
committed by
Peter Johnson
parent
54092378e9
commit
e71f454b9d
102
wpilibc/athena/include/CANSpeedController.h
Normal file
102
wpilibc/athena/include/CANSpeedController.h
Normal file
@@ -0,0 +1,102 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) FIRST 2014-2016. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "SpeedController.h"
|
||||
|
||||
/**
|
||||
* Interface for "smart" CAN-based speed controllers.
|
||||
* @see CANJaguar
|
||||
* @see CANTalon
|
||||
*/
|
||||
class CANSpeedController : public SpeedController {
|
||||
public:
|
||||
enum ControlMode {
|
||||
kPercentVbus = 0,
|
||||
kCurrent = 1,
|
||||
kSpeed = 2,
|
||||
kPosition = 3,
|
||||
kVoltage = 4,
|
||||
kFollower = 5, // Not supported in Jaguar.
|
||||
kMotionProfile = 6, // Not supported in Jaguar.
|
||||
};
|
||||
|
||||
// Helper function for the ControlMode enum
|
||||
virtual bool IsModePID(ControlMode mode) const = 0;
|
||||
|
||||
enum Faults {
|
||||
kCurrentFault = 1,
|
||||
kTemperatureFault = 2,
|
||||
kBusVoltageFault = 4,
|
||||
kGateDriverFault = 8,
|
||||
/* SRX extensions */
|
||||
kFwdLimitSwitch = 0x10,
|
||||
kRevLimitSwitch = 0x20,
|
||||
kFwdSoftLimit = 0x40,
|
||||
kRevSoftLimit = 0x80,
|
||||
};
|
||||
|
||||
enum Limits { kForwardLimit = 1, kReverseLimit = 2 };
|
||||
|
||||
enum NeutralMode {
|
||||
/** Use the NeutralMode that is set by the jumper wire on the CAN device */
|
||||
kNeutralMode_Jumper = 0,
|
||||
/** Stop the motor's rotation by applying a force. */
|
||||
kNeutralMode_Brake = 1,
|
||||
/** Do not attempt to stop the motor. Instead allow it to coast to a stop
|
||||
without applying resistance. */
|
||||
kNeutralMode_Coast = 2
|
||||
};
|
||||
|
||||
enum LimitMode {
|
||||
/** Only use switches for limits */
|
||||
kLimitMode_SwitchInputsOnly = 0,
|
||||
/** Use both switches and soft limits */
|
||||
kLimitMode_SoftPositionLimits = 1,
|
||||
/* SRX extensions */
|
||||
/** Disable switches and disable soft limits */
|
||||
kLimitMode_SrxDisableSwitchInputs = 2,
|
||||
};
|
||||
|
||||
virtual float Get() const = 0;
|
||||
virtual void Set(float value, uint8_t syncGroup = 0) = 0;
|
||||
virtual void StopMotor() = 0;
|
||||
virtual void Disable() = 0;
|
||||
virtual void SetP(double p) = 0;
|
||||
virtual void SetI(double i) = 0;
|
||||
virtual void SetD(double d) = 0;
|
||||
virtual void SetPID(double p, double i, double d) = 0;
|
||||
virtual double GetP() const = 0;
|
||||
virtual double GetI() const = 0;
|
||||
virtual double GetD() const = 0;
|
||||
virtual float GetBusVoltage() const = 0;
|
||||
virtual float GetOutputVoltage() const = 0;
|
||||
virtual float GetOutputCurrent() const = 0;
|
||||
virtual float GetTemperature() const = 0;
|
||||
virtual double GetPosition() const = 0;
|
||||
virtual double GetSpeed() const = 0;
|
||||
virtual bool GetForwardLimitOK() const = 0;
|
||||
virtual bool GetReverseLimitOK() const = 0;
|
||||
virtual uint16_t GetFaults() const = 0;
|
||||
virtual void SetVoltageRampRate(double rampRate) = 0;
|
||||
virtual uint32_t GetFirmwareVersion() const = 0;
|
||||
virtual void ConfigNeutralMode(NeutralMode mode) = 0;
|
||||
virtual void ConfigEncoderCodesPerRev(uint16_t codesPerRev) = 0;
|
||||
virtual void ConfigPotentiometerTurns(uint16_t turns) = 0;
|
||||
virtual void ConfigSoftPositionLimits(double forwardLimitPosition,
|
||||
double reverseLimitPosition) = 0;
|
||||
virtual void DisableSoftPositionLimits() = 0;
|
||||
virtual void ConfigLimitMode(LimitMode mode) = 0;
|
||||
virtual void ConfigForwardLimit(double forwardLimitPosition) = 0;
|
||||
virtual void ConfigReverseLimit(double reverseLimitPosition) = 0;
|
||||
virtual void ConfigMaxOutputVoltage(double voltage) = 0;
|
||||
virtual void ConfigFaultTime(float faultTime) = 0;
|
||||
// Hold off on interface until we figure out ControlMode enums.
|
||||
// virtual void SetControlMode(ControlMode mode) = 0;
|
||||
// virtual ControlMode GetControlMode() const = 0;
|
||||
};
|
||||
Reference in New Issue
Block a user