void CANJaguarConfiguration :: Configure ( CANJaguar & Jag ) { Jag.DisableControl (); Jag.ConfigMaxOutputVoltage ( MaxOutputVoltage ); Jag.SetVoltageRampRate ( VoltageRampRate ); Jag.ConfigFaultTime ( FaultTime ); Jag.ConfigNeutralMode ( NeutralMode ); Jag.ConfigLimitMode ( LimitMode ); Jag.ConfigForwardLimit ( ForwardPositionLimit ); Jag.ConfigForwardLimit ( ReversePositionLimit ); switch ( Feedback ) { case kFeedbackType_None: switch ( Mode ) { case CANSpeedController :: kPercentVbus: Jag.SetPercentMode (); break; case CANSpeedController :: kCurrent: Jag.SetCurrentMode ( P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kVoltage: Jag.SetVoltageMode (); break; default: Jag.SetVoltageMode ( CANJaguar :: Encoder, EncoderCounts ); Jag.ConfigMaxOutputVoltage ( 0.0 ); break; } break; case kFeedbackType_Encoder: switch ( Mode ) { case CANSpeedController :: kPercentVbus: Jag.SetPercentMode ( CANJaguar :: Encoder, EncoderCounts ); break; case CANSpeedController :: kCurrent: Jag.SetCurrentMode ( CANJaguar :: Encoder, EncoderCounts, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kSpeed: Jag.SetSpeedMode ( CANJaguar :: Encoder, EncoderCounts, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kVoltage: Jag.SetVoltageMode ( CANJaguar :: Encoder, EncoderCounts ); break; default: Jag.SetVoltageMode ( CANJaguar :: Encoder, EncoderCounts ); Jag.ConfigMaxOutputVoltage ( 0.0 ); break; } break; case kFeedbackType_QuadEncoder: switch ( Mode ) { case CANSpeedController :: kPercentVbus: Jag.SetPercentMode ( CANJaguar :: QuadEncoder, EncoderCounts ); break; case CANSpeedController :: kCurrent: Jag.SetCurrentMode ( CANJaguar :: QuadEncoder, EncoderCounts, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kSpeed: Jag.SetSpeedMode ( CANJaguar :: QuadEncoder, EncoderCounts, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kPosition: Jag.SetPositionMode ( CANJaguar :: QuadEncoder, EncoderCounts, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kVoltage: Jag.SetVoltageMode ( CANJaguar :: QuadEncoder, EncoderCounts ); Jag.Set ( 0 ); Jag.EnableControl (); break; default: Jag.SetVoltageMode ( CANJaguar :: Encoder, EncoderCounts ); Jag.ConfigMaxOutputVoltage ( 0.0 ); break; } break; case kFeedbackType_Potentiometer: switch ( Mode ) { case CANSpeedController :: kPercentVbus: Jag.SetPercentMode ( CANJaguar :: Potentiometer ); break; case CANSpeedController :: kCurrent: Jag.SetCurrentMode ( CANJaguar :: Potentiometer, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kPosition: Jag.SetPositionMode ( CANJaguar :: Potentiometer, P, I, D ); Jag.Set ( 0 ); Jag.EnableControl (); break; case CANSpeedController :: kVoltage: Jag.SetVoltageMode ( CANJaguar :: Potentiometer ); break; default: Jag.SetVoltageMode ( CANJaguar :: Encoder, EncoderCounts ); Jag.ConfigMaxOutputVoltage ( 0.0 ); break; } break; } };