From 2eaece6989f2c4f3094b1b2db5cf18ced1cab066 Mon Sep 17 00:00:00 2001 From: Colin Li Date: Sun, 17 Mar 2024 15:58:12 -0500 Subject: [PATCH 01/11] Update Phoenix libraries Phoenix libraries updated to https://github.com/CrossTheRoadElec/Phoenix5-Linux-Example/commit/f06d514ee8ae8419888c2f94147d3000ad52d64d --- CMakeLists.txt | 30 +- include/ctre/Phoenix.h | 6 + include/ctre/phoenix/CANifier.h | 11 +- include/ctre/phoenix/ErrorCode.h | 48 +- include/ctre/phoenix/PhoenixVersion.h | 1 + include/ctre/phoenix/cci/CANCoder_CCI.h | 2 +- include/ctre/phoenix/cci/CANdle_CCI.h | 42 ++ include/ctre/phoenix/cci/CCI.h | 1 + include/ctre/phoenix/cci/Diagnostics_CCI.h | 9 +- include/ctre/phoenix/cci/MotController_CCI.h | 2 +- include/ctre/phoenix/cci/Orchestra_CCI.h | 1 + include/ctre/phoenix/cci/PDP_CCI.h | 6 + include/ctre/phoenix/cci/PigeonIMU_CCI.h | 10 +- include/ctre/phoenix/cci/PlatformCAN_CCI.h | 2 +- include/ctre/phoenix/cci/Platform_CCI.h | 11 +- include/ctre/phoenix/defs/signalTypes.h | 87 --- include/ctre/phoenix/export.h | 10 + ...hoenix_MotorControl_CAN_MotControllerJNI.h | 4 +- .../jni/com_ctre_phoenix_OrchestraJNI.h | 8 + .../com_ctre_phoenix_Sensors_PigeonImuJNI.h | 64 +- .../jni/com_ctre_phoenix_led_CANdleJNI.h | 229 ++++++++ .../com_ctre_phoenix_platform_PlatformJNI.h | 24 +- ...ctre_phoenix_platform_can_PlatformCANJNI.h | 4 +- .../com_ctre_phoenix_sensors_CANCoderJNI.h | 4 +- include/ctre/phoenix/led/Animation.h | 53 ++ .../ctre/phoenix/led/BaseStandardAnimation.h | 53 ++ .../ctre/phoenix/led/BaseTwoSizeAnimation.h | 70 +++ include/ctre/phoenix/led/CANdle.h | 403 +++++++++++++ include/ctre/phoenix/led/CANdleConfigUtil.h | 26 + .../ctre/phoenix/led/CANdleConfiguration.h | 52 ++ include/ctre/phoenix/led/CANdleControlFrame.h | 15 + include/ctre/phoenix/led/CANdleFaults.h | 219 +++++++ include/ctre/phoenix/led/CANdleLedStripType.h | 36 ++ include/ctre/phoenix/led/CANdleStatusFrame.h | 20 + include/ctre/phoenix/led/ColorFlowAnimation.h | 48 ++ include/ctre/phoenix/led/FireAnimation.h | 37 ++ include/ctre/phoenix/led/LarsonAnimation.h | 58 ++ include/ctre/phoenix/led/RainbowAnimation.h | 25 + include/ctre/phoenix/led/RgbFadeAnimation.h | 24 + .../ctre/phoenix/led/SingleFadeAnimation.h | 27 + include/ctre/phoenix/led/StrobeAnimation.h | 27 + include/ctre/phoenix/led/TwinkleAnimation.h | 71 +++ .../ctre/phoenix/led/TwinkleOffAnimation.h | 71 +++ include/ctre/phoenix/led/VBatOutputMode.h | 24 + .../phoenix/motorcontrol/FeedbackDevice.h | 4 +- .../phoenix/motorcontrol/IMotorController.h | 70 ++- .../motorcontrol/IMotorControllerEnhanced.h | 17 +- .../phoenix/motorcontrol/LimitSwitchType.h | 16 +- .../phoenix/motorcontrol/SensorCollection.h | 42 ++ .../ctre/phoenix/motorcontrol/StatusFrame.h | 10 + .../motorcontrol/TalonFXSensorCollection.h | 15 + .../motorcontrol/TalonFXSimCollection.h | 145 +++++ .../motorcontrol/TalonSRXSimCollection.h | 217 +++++++ .../motorcontrol/VictorSPXSimCollection.h | 68 +++ .../motorcontrol/can/BaseMotorController.h | 133 ++--- .../ctre/phoenix/motorcontrol/can/BaseTalon.h | 50 +- .../ctre/phoenix/motorcontrol/can/TalonFX.h | 38 +- .../ctre/phoenix/motorcontrol/can/TalonSRX.h | 43 ++ .../ctre/phoenix/motorcontrol/can/VictorSPX.h | 32 + .../phoenix/motorcontrol/can/WPI_TalonSRX.h | 128 ---- .../phoenix/motorcontrol/can/WPI_VictorSPX.h | 128 ---- include/ctre/phoenix/music/Orchestra.h | 10 +- include/ctre/phoenix/paramEnum.h | 56 +- include/ctre/phoenix/platform/BasePlatform.h | 92 +++ include/ctre/phoenix/platform/Platform-pack.h | 16 - include/ctre/phoenix/platform/Platform.h | 97 +--- include/ctre/phoenix/platform/PlatformSim.h | 61 -- include/ctre/phoenix/platform/ReportError.h | 14 + include/ctre/phoenix/platform/SleepUs.h | 30 + .../ctre/phoenix/platform/can/PlatformCAN.h | 9 + include/ctre/phoenix/platform/canframe.h | 25 + .../ctre/phoenix/platform/canivore_device.h | 13 + include/ctre/phoenix/platform/ctr_assert.h | 23 + include/ctre/phoenix/runtime/LibLoader.h | 274 --------- include/ctre/phoenix/sensors/BasePigeon.h | 548 ++++++++++++++++++ .../phoenix/sensors/BasePigeonSimCollection.h | 67 +++ include/ctre/phoenix/sensors/CANCoder.h | 38 +- .../phoenix/sensors/CANCoderSimCollection.h | 89 +++ include/ctre/phoenix/sensors/Pigeon2.h | 349 +++++++++++ include/ctre/phoenix/sensors/Pigeon2_Faults.h | 148 +++++ .../phoenix/sensors/Pigeon2_StickyFaults.h | 148 +++++ include/ctre/phoenix/sensors/PigeonIMU.h | 277 +-------- .../ctre/phoenix/sensors/PigeonIMU_Faults.h | 26 +- .../phoenix/sensors/PigeonIMU_StickyFaults.h | 22 +- .../ctre/phoenix/string_util/string_util.h | 20 +- include/ctre/phoenix/tasking/ButtonMonitor.h | 49 -- .../Schedulers/ConcurrentScheduler(1).h | 88 --- .../Schedulers/SequentialScheduler(1).h | 75 --- include/ctre/phoenix/unmanaged/Unmanaged.h | 86 ++- lib/jetsontx/libCTRE_Phoenix.a | Bin 600214 -> 0 bytes lib/jetsontx/libCTRE_Phoenix.so | Bin 0 -> 544760 bytes lib/jetsontx/libCTRE_PhoenixCCI.a | Bin 1378174 -> 0 bytes lib/jetsontx/libCTRE_PhoenixCCI.so | Bin 0 -> 1374904 bytes lib/jetsontx/libCTRE_PhoenixCanutils.a | Bin 64830 -> 0 bytes lib/jetsontx/libCTRE_PhoenixCore.a | Bin 14440 -> 0 bytes lib/jetsontx/libCTRE_PhoenixDiagnostics.a | Bin 2059948 -> 0 bytes .../libCTRE_PhoenixPlatform_socketcan.a | Bin 12500 -> 0 bytes lib/raspberry/libCTRE_Phoenix.a | Bin 425568 -> 0 bytes lib/raspberry/libCTRE_Phoenix.so | Bin 0 -> 396684 bytes lib/raspberry/libCTRE_PhoenixCCI.a | Bin 936604 -> 0 bytes lib/raspberry/libCTRE_PhoenixCCI.so | Bin 0 -> 1216736 bytes lib/raspberry/libCTRE_PhoenixCanutils.a | Bin 41052 -> 0 bytes lib/raspberry/libCTRE_PhoenixCore.a | Bin 10882 -> 0 bytes lib/raspberry/libCTRE_PhoenixDiagnostics.a | Bin 1701658 -> 0 bytes .../libCTRE_PhoenixPlatform_socketcan.a | Bin 8940 -> 0 bytes lib/x86-64/libCTRE_Phoenix.a | Bin 604850 -> 0 bytes lib/x86-64/libCTRE_Phoenix.so | Bin 0 -> 558160 bytes lib/x86-64/libCTRE_PhoenixCCI.a | Bin 1314500 -> 0 bytes lib/x86-64/libCTRE_PhoenixCCI.so | Bin 0 -> 1546936 bytes lib/x86-64/libCTRE_PhoenixCanutils.a | Bin 50040 -> 0 bytes lib/x86-64/libCTRE_PhoenixCore.a | Bin 13908 -> 0 bytes lib/x86-64/libCTRE_PhoenixDiagnostics.a | Bin 2077820 -> 0 bytes .../libCTRE_PhoenixPlatform_socketcan.a | Bin 11228 -> 0 bytes src/app/RawTalonTest/test.cpp | 7 +- src/app/RosControlTest/main.cpp | 3 +- src/hardware/src/Motor.cpp | 2 +- 116 files changed, 4370 insertions(+), 1523 deletions(-) create mode 100644 include/ctre/phoenix/PhoenixVersion.h create mode 100644 include/ctre/phoenix/cci/CANdle_CCI.h create mode 100644 include/ctre/phoenix/cci/PDP_CCI.h delete mode 100644 include/ctre/phoenix/defs/signalTypes.h create mode 100644 include/ctre/phoenix/export.h create mode 100644 include/ctre/phoenix/jni/com_ctre_phoenix_led_CANdleJNI.h create mode 100644 include/ctre/phoenix/led/Animation.h create mode 100644 include/ctre/phoenix/led/BaseStandardAnimation.h create mode 100644 include/ctre/phoenix/led/BaseTwoSizeAnimation.h create mode 100644 include/ctre/phoenix/led/CANdle.h create mode 100644 include/ctre/phoenix/led/CANdleConfigUtil.h create mode 100644 include/ctre/phoenix/led/CANdleConfiguration.h create mode 100644 include/ctre/phoenix/led/CANdleControlFrame.h create mode 100644 include/ctre/phoenix/led/CANdleFaults.h create mode 100644 include/ctre/phoenix/led/CANdleLedStripType.h create mode 100644 include/ctre/phoenix/led/CANdleStatusFrame.h create mode 100644 include/ctre/phoenix/led/ColorFlowAnimation.h create mode 100644 include/ctre/phoenix/led/FireAnimation.h create mode 100644 include/ctre/phoenix/led/LarsonAnimation.h create mode 100644 include/ctre/phoenix/led/RainbowAnimation.h create mode 100644 include/ctre/phoenix/led/RgbFadeAnimation.h create mode 100644 include/ctre/phoenix/led/SingleFadeAnimation.h create mode 100644 include/ctre/phoenix/led/StrobeAnimation.h create mode 100644 include/ctre/phoenix/led/TwinkleAnimation.h create mode 100644 include/ctre/phoenix/led/TwinkleOffAnimation.h create mode 100644 include/ctre/phoenix/led/VBatOutputMode.h create mode 100644 include/ctre/phoenix/motorcontrol/TalonFXSimCollection.h create mode 100644 include/ctre/phoenix/motorcontrol/TalonSRXSimCollection.h create mode 100644 include/ctre/phoenix/motorcontrol/VictorSPXSimCollection.h delete mode 100644 include/ctre/phoenix/motorcontrol/can/WPI_TalonSRX.h delete mode 100644 include/ctre/phoenix/motorcontrol/can/WPI_VictorSPX.h create mode 100644 include/ctre/phoenix/platform/BasePlatform.h delete mode 100644 include/ctre/phoenix/platform/PlatformSim.h create mode 100644 include/ctre/phoenix/platform/ReportError.h create mode 100644 include/ctre/phoenix/platform/SleepUs.h create mode 100644 include/ctre/phoenix/platform/canframe.h create mode 100644 include/ctre/phoenix/platform/canivore_device.h create mode 100644 include/ctre/phoenix/platform/ctr_assert.h delete mode 100644 include/ctre/phoenix/runtime/LibLoader.h create mode 100644 include/ctre/phoenix/sensors/BasePigeon.h create mode 100644 include/ctre/phoenix/sensors/BasePigeonSimCollection.h create mode 100644 include/ctre/phoenix/sensors/CANCoderSimCollection.h create mode 100644 include/ctre/phoenix/sensors/Pigeon2.h create mode 100644 include/ctre/phoenix/sensors/Pigeon2_Faults.h create mode 100644 include/ctre/phoenix/sensors/Pigeon2_StickyFaults.h delete mode 100644 include/ctre/phoenix/tasking/ButtonMonitor.h delete mode 100644 include/ctre/phoenix/tasking/Schedulers/ConcurrentScheduler(1).h delete mode 100644 include/ctre/phoenix/tasking/Schedulers/SequentialScheduler(1).h delete mode 100644 lib/jetsontx/libCTRE_Phoenix.a create mode 100644 lib/jetsontx/libCTRE_Phoenix.so delete mode 100644 lib/jetsontx/libCTRE_PhoenixCCI.a create mode 100644 lib/jetsontx/libCTRE_PhoenixCCI.so delete mode 100644 lib/jetsontx/libCTRE_PhoenixCanutils.a delete mode 100644 lib/jetsontx/libCTRE_PhoenixCore.a delete mode 100644 lib/jetsontx/libCTRE_PhoenixDiagnostics.a delete mode 100644 lib/jetsontx/libCTRE_PhoenixPlatform_socketcan.a delete mode 100644 lib/raspberry/libCTRE_Phoenix.a create mode 100644 lib/raspberry/libCTRE_Phoenix.so delete mode 100644 lib/raspberry/libCTRE_PhoenixCCI.a create mode 100644 lib/raspberry/libCTRE_PhoenixCCI.so delete mode 100644 lib/raspberry/libCTRE_PhoenixCanutils.a delete mode 100644 lib/raspberry/libCTRE_PhoenixCore.a delete mode 100644 lib/raspberry/libCTRE_PhoenixDiagnostics.a delete mode 100644 lib/raspberry/libCTRE_PhoenixPlatform_socketcan.a delete mode 100644 lib/x86-64/libCTRE_Phoenix.a create mode 100644 lib/x86-64/libCTRE_Phoenix.so delete mode 100644 lib/x86-64/libCTRE_PhoenixCCI.a create mode 100644 lib/x86-64/libCTRE_PhoenixCCI.so delete mode 100644 lib/x86-64/libCTRE_PhoenixCanutils.a delete mode 100644 lib/x86-64/libCTRE_PhoenixCore.a delete mode 100644 lib/x86-64/libCTRE_PhoenixDiagnostics.a delete mode 100644 lib/x86-64/libCTRE_PhoenixPlatform_socketcan.a diff --git a/CMakeLists.txt b/CMakeLists.txt index 42469da..8bef7b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -133,29 +133,17 @@ include_directories( # src/${PROJECT_NAME}/wrevolution.cpp # ) function(MakeTalonTarget TARGET_NAME) - if(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabihf") # Jetson TK1 / Pi - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_Phoenix.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_PhoenixCCI.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_PhoenixDiagnostics.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_PhoenixPlatform_socketcan.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_PhoenixCanutils.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/raspberry/libCTRE_PhoenixCore.a) - elseif(${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "aarch64-linux-gnu") # Jetson TX2 - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_Phoenix.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_PhoenixCCI.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_PhoenixDiagnostics.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_PhoenixPlatform_socketcan.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_PhoenixCanutils.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/jetsontx/libCTRE_PhoenixCore.a) + if (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "arm-linux-gnueabihf") # Jetson TK1 / Pi + set(PHOENIX_LIBS_DIR ${PROJECT_SOURCE_DIR}/lib/raspberry) + elseif (${CMAKE_LIBRARY_ARCHITECTURE} STREQUAL "aarch64-linux-gnu") # Jetson TX2 + set(PHOENIX_LIBS_DIR ${PROJECT_SOURCE_DIR}/lib/jetsontx) else() - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_Phoenix.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_PhoenixCCI.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_PhoenixDiagnostics.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_PhoenixPlatform_socketcan.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_PhoenixCanutils.a) - target_link_libraries(${TARGET_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/lib/x86-64/libCTRE_PhoenixCore.a) + set(PHOENIX_LIBS_DIR ${PROJECT_SOURCE_DIR}/lib/x86-64) endif() + target_link_libraries(${TARGET_NAME} PRIVATE ${PHOENIX_LIBS_DIR}/libCTRE_Phoenix.so) + target_link_libraries(${TARGET_NAME} PRIVATE ${PHOENIX_LIBS_DIR}/libCTRE_PhoenixCCI.so) + target_link_libraries(${TARGET_NAME} PRIVATE Threads::Threads) endfunction(MakeTalonTarget) @@ -164,4 +152,4 @@ function(MakeROSTarget TARGET_NAME) add_dependencies(${TARGET_NAME} ${catkin_EXPORTED_TARGETS}) endfunction(MakeROSTarget) -add_subdirectory(src) \ No newline at end of file +add_subdirectory(src) diff --git a/include/ctre/Phoenix.h b/include/ctre/Phoenix.h index 40738da..edb4a7f 100644 --- a/include/ctre/Phoenix.h +++ b/include/ctre/Phoenix.h @@ -14,6 +14,7 @@ #include "ctre/phoenix/paramEnum.h" #include "ctre/phoenix/HsvToRgb.h" #include "ctre/phoenix/LinearInterpolation.h" +#include "ctre/phoenix/led/CANdle.h" #include "ctre/phoenix/motion/BufferedTrajectoryPointStream.h" #include "ctre/phoenix/motion/MotionProfileStatus.h" #include "ctre/phoenix/motion/TrajectoryPoint.h" @@ -30,6 +31,7 @@ #include "ctre/phoenix/music/Orchestra.h" #include "ctre/phoenix/sensors/CANCoder.h" #include "ctre/phoenix/sensors/PigeonIMU.h" +#include "ctre/phoenix/sensors/Pigeon2.h" #include "ctre/phoenix/signals/MovingAverage.h" #include "ctre/phoenix/tasking/Schedulers/ConcurrentScheduler.h" #include "ctre/phoenix/tasking/ILoopable.h" @@ -40,6 +42,9 @@ #include "ctre/phoenix/motorcontrol/can/WPI_TalonFX.h" #include "ctre/phoenix/motorcontrol/can/WPI_TalonSRX.h" #include "ctre/phoenix/motorcontrol/can/WPI_VictorSPX.h" +#include "ctre/phoenix/sensors/WPI_CANCoder.h" +#include "ctre/phoenix/sensors/WPI_PigeonIMU.h" +#include "ctre/phoenix/sensors/WPI_Pigeon2.h" #include "ctre/phoenix/tasking/ButtonMonitor.h" #endif @@ -56,6 +61,7 @@ */ using namespace ctre; using namespace ctre::phoenix; +using namespace ctre::phoenix::led; using namespace ctre::phoenix::motion; using namespace ctre::phoenix::motorcontrol; using namespace ctre::phoenix::motorcontrol::can; diff --git a/include/ctre/phoenix/CANifier.h b/include/ctre/phoenix/CANifier.h index 205b02e..da7e8e2 100644 --- a/include/ctre/phoenix/CANifier.h +++ b/include/ctre/phoenix/CANifier.h @@ -9,6 +9,7 @@ #include "ctre/phoenix/CANifierStatusFrame.h" #include "ctre/phoenix/CANifierStickyFaults.h" #include "ctre/phoenix/CANifierFaults.h" +#include "ctre/phoenix/sensors/SensorVelocityMeasPeriod.h" #include "ctre/phoenix/CANifierVelocityMeasPeriod.h" namespace ctre {namespace phoenix { @@ -20,7 +21,7 @@ struct CANifierConfiguration : CustomParamConfiguration{ /** * Velocity measurement period to use */ - CANifierVelocityMeasPeriod velocityMeasurementPeriod; + ctre::phoenix::sensors::SensorVelocityMeasPeriod velocityMeasurementPeriod; /** * Velocity measurement window to use */ @@ -39,7 +40,7 @@ struct CANifierConfiguration : CustomParamConfiguration{ bool clearPositionOnQuadIdx; CANifierConfiguration() : - velocityMeasurementPeriod(Period_100Ms), + velocityMeasurementPeriod(ctre::phoenix::sensors::SensorVelocityMeasPeriod::Period_100Ms), velocityMeasurementWindow(64), clearPositionOnLimitF(false), clearPositionOnLimitR(false), @@ -61,7 +62,7 @@ struct CANifierConfiguration : CustomParamConfiguration{ */ std::string toString(std::string prependString) { - std::string retstr = prependString + ".velocityMeasurementPeriod = " + CANifierVelocityMeasPeriodRoutines::toString(velocityMeasurementPeriod) + ";\n"; + std::string retstr = prependString + ".velocityMeasurementPeriod = " + ctre::phoenix::sensors::SensorVelocityMeasPeriodRoutines::toString(velocityMeasurementPeriod) + ";\n"; retstr += prependString + ".velocityMeasurementWindow = " + std::to_string(velocityMeasurementWindow) + ";\n"; retstr += prependString + ".clearPositionOnLimitF = " + std::to_string(clearPositionOnLimitF) + ";\n"; retstr += prependString + ".clearPositionOnLimitR = " + std::to_string(clearPositionOnLimitR) + ";\n"; @@ -325,6 +326,10 @@ class CANifier: public CANBusAddressable { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ + ErrorCode ConfigVelocityMeasurementPeriod( + ctre::phoenix::sensors::SensorVelocityMeasPeriod period, int timeoutMs = 0); + + [[deprecated("Use the overload with SensorVelocityMeasPeriod instead")]] ErrorCode ConfigVelocityMeasurementPeriod( CANifierVelocityMeasPeriod period, int timeoutMs = 0); /** diff --git a/include/ctre/phoenix/ErrorCode.h b/include/ctre/phoenix/ErrorCode.h index ea7e7f4..3e61104 100644 --- a/include/ctre/phoenix/ErrorCode.h +++ b/include/ctre/phoenix/ErrorCode.h @@ -1,13 +1,16 @@ #pragma once + #include namespace ctre { namespace phoenix { enum ErrorCode -: int32_t +#ifdef __cplusplus + : int32_t +#endif { - OK = 0, + OK = 0, OKAY = 0, //!< No Error - Function executed as expected //CAN-Related @@ -30,7 +33,6 @@ enum ErrorCode BufferFailure = -10, FirwmwareNonFRC = -11, - //General GeneralError = -100, //!< User Specified General Error GENERAL_ERROR = -100, @@ -58,11 +60,12 @@ enum ErrorCode GainsAreNotSet = -503, WrongRemoteLimitSwitchSource = -504, DoubleVoltageCompensatingWPI = -505, + CANdleAnimSlotOutOfBounds = -506, //Higher Level IncompatibleMode = -600, InvalidHandle = -601, //!< Handle does not match stored map of handles - + //Firmware Versions FeatureRequiresHigherFirm = -700, MotorControllerFeatureRequiresHigherFirm = -701, @@ -70,12 +73,13 @@ enum ErrorCode ConfigFactoryDefaultRequiresHigherFirm = -702, ConfigMotionSCurveRequiresHigherFirm = -703, TalonFXFirmwarePreVBatDetect = -704, + CANdleAnimationsRequireHigherFirm = -705, //Operating system centric LibraryCouldNotBeLoaded = -800, MissingRoutineInLibrary = -801, ResourceNotAvailable = -802, - + //MIDI and Orchestra centric MusicFileNotFound = -900, MusicFileWrongSize = -901, @@ -85,7 +89,24 @@ enum ErrorCode MusicFileTooOld = -905, MusicInterrupted = -906, MusicNotSupported = -907, - + + kInvalidInterface = -1000, + kInvalidGuid = -1001, + kInvalidClass = -1002, + kInvalidProtocol = -1003, + kInvalidPath = -1004, + kGeneralWinUsbError = -1005, + kFailedSetup = -1006, + kListenFailed = -1007, + kSendFailed = -1008, + kReceiveFailed = -1009, + kInvalidRespFormat = -1010, + kWinUsbInitFailed = -1011, + kWinUsbQueryFailed = -1012, + kWinUsbGeneralError = -1013, + kAccessDenied = -1014, + kFirmwareInvalidResponse = -1015, + //CAN Related PulseWidthSensorNotPresent = +10, //!< Special Code for "isSensorPresent" @@ -97,11 +118,16 @@ enum ErrorCode FeaturesNotAvailableYet = 104, // feature will be release in an upcoming release ControlModeNotValid = 105, // Current control mode of motor controller not valid for this call ControlModeNotSupportedYet = 106, - CascadedPIDNotSupporteYet= 107, - AuxiliaryPIDNotSupportedYet= 107, - RemoteSensorsNotSupportedYet= 108, - MotProfFirmThreshold= 109, + CascadedPIDNotSupporteYet = 107, + AuxiliaryPIDNotSupportedYet = 107, + RemoteSensorsNotSupportedYet = 108, + MotProfFirmThreshold = 109, MotProfFirmThreshold2 = 110, + + //Simulation + SimDeviceNotFound = 200, + SimPhysicsTypeNotSupported = 201, + SimDeviceAlreadyExists = 202, }; class ErrorCollection { public: @@ -112,7 +138,7 @@ class ErrorCollection { _firstError = FirstOne(_firstError, err); } void NewError(int err) { - _firstError = FirstOne(_firstError, (ErrorCode) err); + _firstError = FirstOne(_firstError, (ErrorCode) err); } ErrorCode GetFirstNonZeroError() { diff --git a/include/ctre/phoenix/PhoenixVersion.h b/include/ctre/phoenix/PhoenixVersion.h new file mode 100644 index 0000000..9cb75e2 --- /dev/null +++ b/include/ctre/phoenix/PhoenixVersion.h @@ -0,0 +1 @@ +const int kPhoenixVersion = 0x00051501; \ No newline at end of file diff --git a/include/ctre/phoenix/cci/CANCoder_CCI.h b/include/ctre/phoenix/cci/CANCoder_CCI.h index d9ec48e..5293c2f 100644 --- a/include/ctre/phoenix/cci/CANCoder_CCI.h +++ b/include/ctre/phoenix/cci/CANCoder_CCI.h @@ -15,7 +15,7 @@ extern "C" { - CCIEXPORT void* c_CANCoder_Create1(int deviceNumber); + CCIEXPORT void* c_CANCoder_Create1(int deviceNumber, const char* canbus); CCIEXPORT void c_CANCoder_DestroyAll(); CCIEXPORT ctre::phoenix::ErrorCode c_CANCoder_Destroy(void* handle); CCIEXPORT ctre::phoenix::ErrorCode c_CANCoder_GetDescription(void* handle, char* toFill, int toFillByteSz, size_t* numBytesFilled); diff --git a/include/ctre/phoenix/cci/CANdle_CCI.h b/include/ctre/phoenix/cci/CANdle_CCI.h new file mode 100644 index 0000000..9fd0c7e --- /dev/null +++ b/include/ctre/phoenix/cci/CANdle_CCI.h @@ -0,0 +1,42 @@ +#pragma once + +#include "ctre/phoenix/cci/CCI.h" +#include "ctre/phoenix/ErrorCode.h" +#include +#include + +extern "C"{ + CCIEXPORT void *c_CANdle_Create1(int deviceNumber, const char* canbus); + CCIEXPORT void c_CANdle_DestroyAll(); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_Destroy(void *handle); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetDescription(void* handle, char* toFill, int toFillByteSz, size_t* numBytesFilled); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetLastError(void* handle); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetLastTimestamp(void* handle, double* timestamp); + CCIEXPORT void c_CANdle_SetLastError(void *handle, int error); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ConfigSetParameter(void *handle, int param, double value, uint8_t subValue, int ordinal, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ConfigGetParameter(void *handle, int param, double *value, int ordinal, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ConfigSetCustomParam(void *handle, int newValue, int paramIndex, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ConfigGetCustomParam(void *handle, int *readValue, int paramIndex, int timoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ConfigFactoryDefault(void *handle, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetFaults(void *handle, int * param) ; + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetStickyFaults(void *handle, int * param) ; + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ClearStickyFaults(void *handle, int timeoutMs) ; + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetFirmwareVersion(void *handle, int *firmwareVers); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_HasResetOccurred(void *handle, bool * hasReset); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_SetStatusFramePeriod(void *handle, int frame, uint8_t periodMs, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetStatusFramePeriod(void *handle, int frame, int *periodMs, int timeoutMs); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_SetControlFramePeriod(void *handle, int frame, int periodMs); + + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_BlockSet(void *handle, int r, int g, int b, int w, int startIdx, int count); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_SetStandardAnimation(void *handle, int idx, double brightness, double speed, int numLed, int ledOffset, double param4, double param5, bool reverseDirection, int animSlot); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_SetTwoSizeAnimation(void *handle, int idx, int r, int g, int b, int w, double speed, int numLed, int ledOffset, int direction, int size, int animSlot); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ClearAnimation(void *handle, int animSlot); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_ModulateVBatOutput(void *handle, double percentModulation); + + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetBusVoltage(void *handle, double *voltage); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_Get5VRailVoltage(void *handle, double *voltage); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetCurrent(void *handle, double *current); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetTemperature(void *handle, double *temperature); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetVBatModulation(void *handle, double *modulation); + CCIEXPORT ctre::phoenix::ErrorCode c_CANdle_GetMaxSimultaneousAnimationCount(void *handle, int *maxAnimationCount); +} diff --git a/include/ctre/phoenix/cci/CCI.h b/include/ctre/phoenix/cci/CCI.h index e849d70..85dfbdf 100644 --- a/include/ctre/phoenix/cci/CCI.h +++ b/include/ctre/phoenix/cci/CCI.h @@ -1,3 +1,4 @@ +//Legacy Export Define. New code should use CTREXPORT from ctre/phoenix/export.h #ifndef CCIEXPORT #if defined(WIN32) || defined(_WIN32) || defined(_WIN64) diff --git a/include/ctre/phoenix/cci/Diagnostics_CCI.h b/include/ctre/phoenix/cci/Diagnostics_CCI.h index 61e16fa..e1ca91a 100644 --- a/include/ctre/phoenix/cci/Diagnostics_CCI.h +++ b/include/ctre/phoenix/cci/Diagnostics_CCI.h @@ -1,10 +1,11 @@ #pragma once #include -#include "ctre/phoenix/cci/CCI.h" +#include "ctre/phoenix/export.h" extern "C"{ - CCIEXPORT void c_Phoenix_Diagnostics_Create(); - CCIEXPORT void c_Phoenix_Diagnostics_Create1(int port); - CCIEXPORT void c_Phoenix_Diagnostics_SetSecondsToStart(int secondsToStart); + CTREXPORT void c_Phoenix_Diagnostics_Create(); + CTREXPORT void c_Phoenix_Diagnostics_Create1(int port); + CTREXPORT void c_Phoenix_Diagnostics_SetSecondsToStart(int secondsToStart); + CTREXPORT void c_Phoenix_Diagnostics_Dispose(); } \ No newline at end of file diff --git a/include/ctre/phoenix/cci/MotController_CCI.h b/include/ctre/phoenix/cci/MotController_CCI.h index e592845..3474a57 100644 --- a/include/ctre/phoenix/cci/MotController_CCI.h +++ b/include/ctre/phoenix/cci/MotController_CCI.h @@ -10,7 +10,7 @@ extern "C"{ CCIEXPORT void* c_MotController_Create1(int baseArbId); - CCIEXPORT void* c_MotController_Create2(int deviceID, const char * model); + CCIEXPORT void* c_MotController_Create2(int deviceID, const char * model, const char* canbus); CCIEXPORT void c_MotController_DestroyAll(); CCIEXPORT ctre::phoenix::ErrorCode c_MotController_Destroy(void *handle); CCIEXPORT ctre::phoenix::ErrorCode c_MotController_GetAppliedControlMode(void *handle, int &controlMode); diff --git a/include/ctre/phoenix/cci/Orchestra_CCI.h b/include/ctre/phoenix/cci/Orchestra_CCI.h index 08f70cd..f933ece 100644 --- a/include/ctre/phoenix/cci/Orchestra_CCI.h +++ b/include/ctre/phoenix/cci/Orchestra_CCI.h @@ -14,6 +14,7 @@ extern "C" { CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_Stop(void* handle); CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_Pause(void* handle); CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_IsPlaying(void* handle, bool &playing); + CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_GetCurrentTime(void* handle, uint32_t ¤tTime); CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_ClearInstruments(void* handle); CCIEXPORT ctre::phoenix::ErrorCode c_Orchestra_AddInstrument(void* handle, void* instrument); diff --git a/include/ctre/phoenix/cci/PDP_CCI.h b/include/ctre/phoenix/cci/PDP_CCI.h new file mode 100644 index 0000000..0fde830 --- /dev/null +++ b/include/ctre/phoenix/cci/PDP_CCI.h @@ -0,0 +1,6 @@ +#pragma once + +#include "ctre/phoenix/cci/CCI.h" +#include "ctre/phoenix/ErrorCode.h" + +CCIEXPORT ctre::phoenix::ErrorCode c_PDP_GetValues(int deviceID, double *voltage, double currents[], int currentCapacity, int *currentsFilled); \ No newline at end of file diff --git a/include/ctre/phoenix/cci/PigeonIMU_CCI.h b/include/ctre/phoenix/cci/PigeonIMU_CCI.h index 8289965..9d27e78 100644 --- a/include/ctre/phoenix/cci/PigeonIMU_CCI.h +++ b/include/ctre/phoenix/cci/PigeonIMU_CCI.h @@ -31,8 +31,8 @@ static std::map pigeonPresent; extern "C"{ - CCIEXPORT void *c_PigeonIMU_Create2(int talonDeviceID); - CCIEXPORT void *c_PigeonIMU_Create1(int deviceNumber); + CCIEXPORT void *c_PigeonIMU_Create2(int talonDeviceID, const char *version); + CCIEXPORT void *c_PigeonIMU_Create1(int deviceNumber, const char *version, const char *canbus); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_Destroy(void *handle); CCIEXPORT void c_PigeonIMU_DestroyAll(); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetDescription(void *handle, char * toFill, int toFillByteSz, size_t * numBytesFilled); @@ -55,8 +55,14 @@ CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_EnterCalibrationMode(void *handle, int calMode, int timeoutMs); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetGeneralStatus(void *handle, int *state, int *currentMode, int *calibrationError, int *bCalIsBooting, double *tempC, int *upTimeSec, int *noMotionBiasCount, int *tempCompensationCount, int *lastError); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetLastError(void *handle); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetLastTimestamp(void* handle, double* timestamp); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_Get6dQuaternion(void *handle, double wxyz[4]); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetYawPitchRoll(void *handle, double ypr[3]); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetYawPitchRoll2(void *handle, double ypr[3]); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetYaw(void *handle, double *yaw); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetPitch(void *handle, double *pitch); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetRoll(void *handle, double *roll); + CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetGravityVector(void *handle, double ypr[3]); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetAccumGyro(void *handle, double xyz_deg[3]); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetAbsoluteCompassHeading(void *handle, double *value); CCIEXPORT ctre::phoenix::ErrorCode c_PigeonIMU_GetCompassHeading(void *handle, double *value); diff --git a/include/ctre/phoenix/cci/PlatformCAN_CCI.h b/include/ctre/phoenix/cci/PlatformCAN_CCI.h index 95c93b2..8776bf9 100644 --- a/include/ctre/phoenix/cci/PlatformCAN_CCI.h +++ b/include/ctre/phoenix/cci/PlatformCAN_CCI.h @@ -6,7 +6,7 @@ #include "ctre/phoenix/autocache.h" extern "C" { - CCIEXPORT int32_t c_SetCANInterface(const char * canBusInterface); + CCIEXPORT int32_t c_RegisterCANbus(char const *canbus); CCIEXPORT ctre::phoenix::ErrorCode c_DestroyAll(); CCIEXPORT ctre::phoenix::ErrorCode c_StartAll(); CCIEXPORT void c_Autocache_SetAutocacheLevel(ctre::phoenix::AutocacheState state); diff --git a/include/ctre/phoenix/cci/Platform_CCI.h b/include/ctre/phoenix/cci/Platform_CCI.h index 1155158..62e659f 100644 --- a/include/ctre/phoenix/cci/Platform_CCI.h +++ b/include/ctre/phoenix/cci/Platform_CCI.h @@ -7,9 +7,10 @@ using namespace ctre::phoenix::platform; extern "C" { - CCIEXPORT int32_t c_SimCreate(DeviceType type, int id); - CCIEXPORT int32_t c_SimDestroy(DeviceType type, int id); - CCIEXPORT int32_t c_SimDestroyAll(); - CCIEXPORT int32_t c_SimConfigGet(DeviceType type, uint32_t param, uint32_t valueToSend, uint32_t & outValueReceived, uint32_t & outSubvalue, uint32_t ordinal, int id); - CCIEXPORT int32_t c_SimConfigSet(DeviceType type, uint32_t param, uint32_t value, uint32_t subValue, uint32_t ordinal, int id); + CCIEXPORT ctre::phoenix::ErrorCode c_SimCreate(DeviceType type, int id); + CCIEXPORT ctre::phoenix::ErrorCode c_SimDestroy(DeviceType type, int id); + CCIEXPORT ctre::phoenix::ErrorCode c_SimDestroyAll(); + CCIEXPORT ctre::phoenix::ErrorCode c_SimSetPhysicsInput(DeviceType type, int id, std::string const &physicsType, double value); + CCIEXPORT ctre::phoenix::ErrorCode c_SimGetPhysicsValue(DeviceType type, int id, std::string const &physicsType, double &value); + CCIEXPORT ctre::phoenix::ErrorCode c_SimGetLastError(DeviceType type, int id); } diff --git a/include/ctre/phoenix/defs/signalTypes.h b/include/ctre/phoenix/defs/signalTypes.h deleted file mode 100644 index c26562c..0000000 --- a/include/ctre/phoenix/defs/signalTypes.h +++ /dev/null @@ -1,87 +0,0 @@ -#ifndef signalTypes__h_ -#define signalTypes__h_ - -enum{ - modeDutyCycleControl = 0, - modePosControl = 1, - modeSpeedControl = 2, - modeCurrentControl = 3, - modeSlaveFollower = 5, - modeMotionProfile = 6, - modeMotionMagic = 7, - motionMagicArc = 8, - //9 - motionProfileArc = 10, - //11 - //12 - //13 -#ifdef SUPPORT_ONE_SHOT_CONTROL_MODE - modeOneShot = 14, -#endif - modeNoDrive = 15, -}; - -typedef enum _feedbackDevice_t{ - kQuadEncoder = 0, - //1 - kAnalog = 2, - //3 - Tachometer= 4, - kPulseWidthEncodedPosition = 8, - - kSensorSum = 9, - kSensorDifference = 10, - kRemoteSensor0 = 11, - kRemoteSensor1 = 12, - //13 - //14 - kSoftwarEmulatedSensor=15, -}feedbackDevice_t; - -typedef enum _MotProf_OutputType_t { - MotProf_OutputType_Disabled = 0, - MotProf_OutputType_Enabled, - MotProf_OutputType_Hold, - MotProf_OutputType_Invalid, -}MotProf_OutputType_t; - -/** - * Saved to limitSwitchForward_Source/limitSwitchReverse_Source - */ -typedef enum _LimitSwitchSource_t { - LSS_Local=0, - LSS_RemoteTalon=1, - LSS_RemoteCanif=2, - LSS_Deactivated=3, -}LimitSwitchSource_t; - -/** - * Saved to limitSwitchForward_normClosedAndDis / limitSwitchReverse_normClosedAndDis - */ -typedef enum _LimitSwitchNormClosedAndDis_t { - LSNCD_NormallyOpen=0, - LSNCD_NormallyClosed=1, - LSNCD_NormallyDisabled=2, -}LimitSwitchNormClosedAndDis_t; - -typedef enum _RemoteSensorSource_t { - RSS_Off, - RSS_RemoteTalonSelSensor, - RSS_RemotePigeon_Yaw, - RSS_RemotePigeon_Pitch, - RSS_RemotePigeon_Roll, - RSS_RemoteCanif_Quad, - RSS_RemoteCanif_PWM0, - RSS_RemoteCanif_PWM1, - RSS_RemoteCanif_PWM2, - RSS_RemoteCanif_PWM3, -} RemoteSensorSource_t; - -typedef enum _SensorTermOrdinal_t { - SensorTermOrdinal_Sum0 = 0, - SensorTermOrdinal_Sum1 = 0, - SensorTermOrdinal_Diff0 = 0, - SensorTermOrdinal_Diff1 = 0, -}SensorTermOrdinal_t; - -#endif // signalTypes__h_ diff --git a/include/ctre/phoenix/export.h b/include/ctre/phoenix/export.h new file mode 100644 index 0000000..2d42244 --- /dev/null +++ b/include/ctre/phoenix/export.h @@ -0,0 +1,10 @@ +#ifndef CTREXPORT + + #if defined(WIN32) || defined(_WIN32) || defined(_WIN64) + #define CTREXPORT __declspec(dllexport) + #elif (defined(__GNUC__) && ((__GNUC__ > 4) || (__GNUC__ == 4) && (__GNUC_MINOR__ > 2))) || __has_attribute(visibility) + #define CTREXPORT __attribute__((visibility("default"))) + #else + #define CTREXPORT + #endif +#endif \ No newline at end of file diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_MotorControl_CAN_MotControllerJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_MotorControl_CAN_MotControllerJNI.h index 053a2f5..153d373 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_MotorControl_CAN_MotControllerJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_MotorControl_CAN_MotControllerJNI.h @@ -18,10 +18,10 @@ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_motorcontrol_can_MotControllerJNI_ /* * Class: com_ctre_phoenix_motorcontrol_can_MotControllerJNI * Method: Create2 - * Signature: (Ijava/lang/String;)J + * Signature: (Ijava/lang/String;java/lang/String;)J */ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_motorcontrol_can_MotControllerJNI_Create2 - (JNIEnv *, jclass, jint, jstring); + (JNIEnv *, jclass, jint, jstring, jstring); /* * Class: com_ctre_phoenix_motorcontrol_can_MotControllerJNI diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_OrchestraJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_OrchestraJNI.h index 0d0b1a6..778a537 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_OrchestraJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_OrchestraJNI.h @@ -63,6 +63,14 @@ JNIEXPORT jint JNICALL Java_com_ctre_phoenix_music_OrchestraJNI_JNI_1Pause JNIEXPORT jboolean JNICALL Java_com_ctre_phoenix_music_OrchestraJNI_JNI_1IsPlaying (JNIEnv *, jclass, jlong); +/* + * Class: com_ctre_phoenix_OrchestraJNI + * Method: JNI_GetCurrentTime + * Signature: (J)Z + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_music_OrchestraJNI_JNI_1GetCurrentTime + (JNIEnv *, jclass, jlong); + /* * Class: com_ctre_phoenix_OrchestraJNI * Method: JNI_ClearInstruments diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_Sensors_PigeonImuJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_Sensors_PigeonImuJNI.h index 5a68bdc..4f8fa38 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_Sensors_PigeonImuJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_Sensors_PigeonImuJNI.h @@ -10,18 +10,18 @@ extern "C" { /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI * Method: JNI_new_PigeonImu_Talon - * Signature: (I)J + * Signature: (ILjava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1new_1PigeonImu_1Talon - (JNIEnv *, jclass, jint); + (JNIEnv *, jclass, jint, jstring); /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI * Method: JNI_new_PigeonImu - * Signature: (I)J + * Signature: (ILjava/lang/String;Ljava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1new_1PigeonImu - (JNIEnv *, jclass, jint); + (JNIEnv *, jclass, jint, jstring, jstring); /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI @@ -31,14 +31,6 @@ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1new_1Pig JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1destroy_1PigeonImu (JNIEnv *, jclass, jlong); -/* - * Class: com_ctre_phoenix_sensors_PigeonImuJNI - * Method: JNI_destroy_AllPigeonImus - * Signature: ()V - */ -//JNIEXPORT void JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1destroy_1AllPigeonImus -// (JNIEnv *, jclass); - /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI * Method: JNI_ConfigSetCustomParam @@ -199,6 +191,46 @@ JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1Get6dQuat JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetYawPitchRoll (JNIEnv *, jclass, jlong, jdoubleArray); +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetYawPitchRoll2 + * Signature: (J[D)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetYawPitchRoll2 + (JNIEnv *, jclass, jlong, jdoubleArray); + +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetYaw + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetYaw + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetPitch + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetPitch + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetRoll + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetRoll + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetGravityVector + * Signature: (J[D)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetGravityVector + (JNIEnv *, jclass, jlong, jdoubleArray); + /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI * Method: JNI_GetAccumGyro @@ -335,6 +367,14 @@ JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetFirmwa JNIEXPORT jint JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetLastError (JNIEnv *, jclass, jlong); +/* + * Class: com_ctre_phoenix_sensors_PigeonImuJNI + * Method: JNI_GetLastTimestamp + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_sensors_PigeonImuJNI_JNI_1GetLastTimestamp + (JNIEnv *, jclass, jlong); + /* * Class: com_ctre_phoenix_sensors_PigeonImuJNI * Method: JNI_HasResetOccurred diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_led_CANdleJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_led_CANdleJNI.h new file mode 100644 index 0000000..4d79e0c --- /dev/null +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_led_CANdleJNI.h @@ -0,0 +1,229 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class com_ctre_phoenix_led_CANdleJNI */ + +#ifndef _Included_com_ctre_phoenix_led_CANdleJNI +#define _Included_com_ctre_phoenix_led_CANdleJNI +#ifdef __cplusplus +extern "C" { +#endif +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: Create + * Signature: (ILjava/lang/String;)J + */ +JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_led_CANdleJNI_Create + (JNIEnv *, jclass, jint, jstring); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetLastError + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetLastError + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetLastTimestamp + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetLastTimestamp + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: BlockSet + * Signature: (JIIIIII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_BlockSet + (JNIEnv *, jclass, jlong, jint, jint, jint, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: SetStandardAnimation + * Signature: (JIDDIIDDZI)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_SetStandardAnimation + (JNIEnv *, jclass, jlong, jint, jdouble, jdouble, jint, jint, jdouble, jdouble, jboolean, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: SetTwoSizeAnimation + * Signature: (JIIIIIDIIIII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_SetTwoSizeAnimation + (JNIEnv *, jclass, jlong, jint, jint, jint, jint, jint, jdouble, jint, jint, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ClearAnimation + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ClearAnimation + (JNIEnv *, jclass, jlong, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ModulateVBatOutput + * Signature: (JD)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ModulateVBatOutput + (JNIEnv *, jclass, jlong, jdouble); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetBusVoltage + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetBusVoltage + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: Get5VRailVoltage + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_Get5VRailVoltage + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetCurrent + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetCurrent + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetTemperature + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetTemperature + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetVbatModulation + * Signature: (J)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetVbatModulation + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetMaxSimultaneousAnimationCount + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetMaxSimultaneousAnimationCount + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ConfigGetParameter + * Signature: (JIII)D + */ +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ConfigGetParameter + (JNIEnv *, jclass, jlong, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ConfigSetParameter + * Signature: (JIDIII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ConfigSetParameter + (JNIEnv *, jclass, jlong, jint, jdouble, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ConfigGetCustomParam + * Signature: (JII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ConfigGetCustomParam + (JNIEnv *, jclass, jlong, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ConfigSetCustomParam + * Signature: (JIII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ConfigSetCustomParam + (JNIEnv *, jclass, jlong, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ConfigFactoryDefault + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ConfigFactoryDefault + (JNIEnv *, jclass, jlong, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetFaults + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetFaults + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetStickyFaults + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetStickyFaults + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: ClearStickyFaults + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_ClearStickyFaults + (JNIEnv *, jclass, jlong, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetFirmwareVersion + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetFirmwareVersion + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: HasResetOccurred + * Signature: (J)Z + */ +JNIEXPORT jboolean JNICALL Java_com_ctre_phoenix_led_CANdleJNI_HasResetOccurred + (JNIEnv *, jclass, jlong); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: SetStatusFramePeriod + * Signature: (JIII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_SetStatusFramePeriod + (JNIEnv *, jclass, jlong, jint, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: GetStatusFramePeriod + * Signature: (JII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_GetStatusFramePeriod + (JNIEnv *, jclass, jlong, jint, jint); + +/* + * Class: com_ctre_phoenix_led_CANdleJNI + * Method: SetControlFramePeriod + * Signature: (JII)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_led_CANdleJNI_SetControlFramePeriod + (JNIEnv *, jclass, jlong, jint, jint); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_platform_PlatformJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_platform_PlatformJNI.h index f9bad7d..35db873 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_platform_PlatformJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_platform_PlatformJNI.h @@ -33,19 +33,27 @@ JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimDestro /* * Class: com_ctre_phoenix_platform_PlatformJNI - * Method: JNI_SimConfigGet - * Signature: (IIIII)I + * Method: JNI_SimSetPhysicsInput + * Signature: (IILjava/lang/String;D)I */ -JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimConfigGet - (JNIEnv *, jclass, jint, jint, jint, jint, jint); +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimSetPhysicsInput + (JNIEnv *, jclass, jint, jint, jstring, jdouble); /* * Class: com_ctre_phoenix_platform_PlatformJNI - * Method: JNI_SimConfigSet - * Signature: (IIIIII)I + * Method: JNI_SimGetPhysicsValue + * Signature: (IILjava/lang/String;)D */ -JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimConfigSet - (JNIEnv *, jclass, jint, jint, jint, jint, jint, jint); +JNIEXPORT jdouble JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimGetPhysicsValue + (JNIEnv *, jclass, jint, jint, jstring); + +/* + * Class: com_ctre_phoenix_platform_PlatformJNI + * Method: JNI_SimGetLastError + * Signature: (II)I + */ +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_PlatformJNI_JNI_1SimGetLastError + (JNIEnv *, jclass, jint, jint); #ifdef __cplusplus } diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_platform_can_PlatformCANJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_platform_can_PlatformCANJNI.h index 4a7e690..433c697 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_platform_can_PlatformCANJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_platform_can_PlatformCANJNI.h @@ -9,10 +9,10 @@ extern "C" { #endif /* * Class: com_ctre_phoenix_platform_can_PlatformCANJNI - * Method: JNI_SetCANInterface + * Method: JNI_RegisterCANbus * Signature: ([C)I */ -JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_can_PlatformCANJNI_JNI_1SetCANInterface +JNIEXPORT jint JNICALL Java_com_ctre_phoenix_platform_can_PlatformCANJNI_JNI_1RegisterCANbus (JNIEnv *, jclass, jcharArray); /* diff --git a/include/ctre/phoenix/jni/com_ctre_phoenix_sensors_CANCoderJNI.h b/include/ctre/phoenix/jni/com_ctre_phoenix_sensors_CANCoderJNI.h index 87a4a4e..9703d83 100644 --- a/include/ctre/phoenix/jni/com_ctre_phoenix_sensors_CANCoderJNI.h +++ b/include/ctre/phoenix/jni/com_ctre_phoenix_sensors_CANCoderJNI.h @@ -10,10 +10,10 @@ extern "C" { /* * Class: com_ctre_phoenix_sensors_CANCoderJNI * Method: Create - * Signature: (I)J + * Signature: (Ijava/lang/String;)J */ JNIEXPORT jlong JNICALL Java_com_ctre_phoenix_sensors_CANCoderJNI_Create - (JNIEnv *, jclass, jint); + (JNIEnv *, jclass, jint, jstring); /* * Class: com_ctre_phoenix_sensors_CANCoderJNI diff --git a/include/ctre/phoenix/led/Animation.h b/include/ctre/phoenix/led/Animation.h new file mode 100644 index 0000000..f619d20 --- /dev/null +++ b/include/ctre/phoenix/led/Animation.h @@ -0,0 +1,53 @@ +#pragma once + +#include + +namespace ctre{ namespace phoenix{ namespace led{ + +class BaseStandardAnimation; +class BaseTwoSizeAnimation; + +/** + * The base class for all animations that CANdle supports. + */ +class Animation { + int _animationIdx, _numLed, _ledOffset; + double _speed; +public: + /** + * Constructor for an Animation class + * @param idx The animation-specific ID + * @param speed The rate at which the animation runs at. Higher is generally faster + * @param numLed The number of LEDs to run the animation on + * @param ledOffset Where to start the animation + */ + Animation(int idx, double speed, int numLed, int ledOffset); + virtual ~Animation(); + /** + * Sets the speed of the animation + * @param speed The rate at which the animation runs at. Higher is generally faster + */ + void SetSpeed(double speed); + /** + * Sets the number of LEDs the animation will run on + * @param numLed The number of LEDs to run the animation on + */ + void SetNumLed(int numLed); + /** + * Sets where the animation starts along the strip + * @param ledOffset Where to start the animation along the strip + */ + void SetLedOffset(int ledOffset); + + virtual BaseStandardAnimation *GetBaseStandardAnimation() = 0; + virtual BaseTwoSizeAnimation *GetBaseTwoSizeAnimation() = 0; + + int GetAnimationIdx(); + double GetSpeed(); + int GetNumLed(); + int GetLedOffset(); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre \ No newline at end of file diff --git a/include/ctre/phoenix/led/BaseStandardAnimation.h b/include/ctre/phoenix/led/BaseStandardAnimation.h new file mode 100644 index 0000000..98cc7db --- /dev/null +++ b/include/ctre/phoenix/led/BaseStandardAnimation.h @@ -0,0 +1,53 @@ +#pragma once + +#include "ctre/phoenix/led/Animation.h" + +namespace ctre{ namespace phoenix{ namespace led{ + +/** + * The base class for one generic type of animation. + * These animations do not allow the user to specify a color. + */ +class BaseStandardAnimation : public Animation { + double _brightness, _param4, _param5; + bool _reverseDirection; +public: + /** + * Constructor for the BaseStandardAnimation object + * @param idx The animation-specific ID + * @param brightness The brightness to run the animation at. This is a scalar from [0, 1] + * @param speed The rate at which the animation runs at. Higher is generally faster + * @param numLed The number of LEDs to run the animation on + * @param param4 Animation-specific parameter + * @param param5 Animation-specific parameter + * @param reverseDirection True to reverse the animation direction, so instead of going "away" from the CANdle, it will go "toward" the CANdle. + * @param ledOffset Where to start the animation + */ + BaseStandardAnimation(int idx, double brightness, double speed, int numLed, double param4, double param5, bool reverseDirection, int ledOffset); + ~BaseStandardAnimation(); + + BaseStandardAnimation *GetBaseStandardAnimation(); + BaseTwoSizeAnimation *GetBaseTwoSizeAnimation(); + + /** + * Sets the brightness of this animation + * @param brightness The brightness to run the animation at. This is a scalar from [0, 1] + */ + void SetBrightness(double brightness); + void SetParam4(double param4); + void SetParam5(double param5); + /** + * Set the Direction of the animation + * @param reverseDirection True to reverse the animation direction, so instead of fire going "away" from the CANdle, it will go "toward" the CANdle. + */ + void SetReverseDirection(bool reverseDirection); + + double GetBrightness(); + double GetParam4(); + double GetParam5(); + bool GetReverseDirection(); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/BaseTwoSizeAnimation.h b/include/ctre/phoenix/led/BaseTwoSizeAnimation.h new file mode 100644 index 0000000..2a89ad2 --- /dev/null +++ b/include/ctre/phoenix/led/BaseTwoSizeAnimation.h @@ -0,0 +1,70 @@ +#pragma once + +#include "ctre/phoenix/led/Animation.h" + +namespace ctre{ namespace phoenix{ namespace led{ + +/** + * The base class for one generic type of animation. + * These animations do allow the user to specify a color. + */ +class BaseTwoSizeAnimation : public Animation { + int _r, _g, _b, _w; + int _direction, _size; + +public: + + /** + * Constructor for the BaseStandardAnimation object + * @param idx The animation-specific ID + * @param r The amount of red to set, a value between [0, 255] + * @param g The amount of green to set, a value between [0, 255] + * @param b The amount of blue to set, a value between [0, 255] + * @param w The amount of white to set, a value between [0, 255] + * @param speed The rate at which the animation runs at. Higher is generally faster + * @param numLed The number of LEDs to run the animation on + * @param direction An animation-specific parameter for its direction + * @param size An animation-specific parameter for its size + * @param ledOffset Where to start the animation + */ + BaseTwoSizeAnimation(int idx, int r, int g, int b, int w, double speed, int numLed, int direction, int size, int ledOffset); + ~BaseTwoSizeAnimation(); + + BaseStandardAnimation *GetBaseStandardAnimation(); + BaseTwoSizeAnimation *GetBaseTwoSizeAnimation(); + + /** + * Sets the R value of the LEDs + * @param r The amount of red to set, a value between [0, 255] + */ + void SetR(int r); + /** + * Sets the G value of the LEDs + * @param g The amount of green to set, a value between [0, 255] + */ + void SetG(int g); + /** + * Sets the B value of the LEDs + * @param b The amount of blue to set, a value between [0, 255] + */ + void SetB(int b); + /** + * Sets the W value of the LEDs + * @param w The amount of white to set, a value between [0, 255] + */ + void SetW(int w); + void SetDirection(int direction); + void SetSize(int size); + + int GetR(); + int GetG(); + int GetB(); + int GetW(); + int GetDirection(); + int GetSize(); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre + diff --git a/include/ctre/phoenix/led/CANdle.h b/include/ctre/phoenix/led/CANdle.h new file mode 100644 index 0000000..cce8a37 --- /dev/null +++ b/include/ctre/phoenix/led/CANdle.h @@ -0,0 +1,403 @@ +#pragma once + +#include "ctre/phoenix/led/Animation.h" +#include "ctre/phoenix/led/BaseStandardAnimation.h" +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" +#include "ctre/phoenix/led/CANdleFaults.h" +#include "ctre/phoenix/led/CANdleStatusFrame.h" +#include "ctre/phoenix/led/CANdleControlFrame.h" +#include "ctre/phoenix/led/CANdleConfiguration.h" +#include "ctre/phoenix/led/CANdleConfigUtil.h" +#include "ctre/phoenix/led/CANdleLedStripType.h" +#include "ctre/phoenix/led/VBatOutputMode.h" +#include "ctre/phoenix/cci/CANdle_CCI.h" +#include "ctre/phoenix/paramEnum.h" +#include "ctre/phoenix/ErrorCode.h" + +namespace ctre{ namespace phoenix{ namespace led{ + +/** + * CTRE CANdle + * + * Device for controlling LEDs from the CAN bus. + * + *
+ * {@code
+ * // Example usage of a CANdle
+ * CANdle candle{0}; // creates a new CANdle with ID 0
+ *
+ * CANdleConfiguration config;
+ * config.stripType = LEDStripType::RGB; // set the strip type to RGB
+ * config.brightnessScalar = 0.5; // dim the LEDs to half brightness
+ * candle.ConfigAllSettings(config);
+ *
+ * candle.SetLEDs(255, 255, 255); // set the CANdle LEDs to white
+ *
+ * // create a rainbow animation:
+ * // - max brightness
+ * // - half speed
+ * // - 64 LEDs
+ * RainbowAnimation rainbowAnim{1, 0.5, 64};
+ * candle.Animate(rainbowAnim);
+ *
+ * ErrorCode error = candle.GetLastError(); // gets the last error generated by the CANdle
+ * CANdleFaults faults;
+ * ErrorCode faultsError = candle.GetFaults(faults); // fills faults with the current CANdle faults; returns the last error generated
+ * }
+ * 
+ */ +class CANdle { +private: + void *_handle; + + + ctre::phoenix::ErrorCode AnimateStandard(BaseStandardAnimation& animation, int animSlot); + ctre::phoenix::ErrorCode AnimateTwoSize(BaseTwoSizeAnimation& animation, int animSlot); +public: + + /** + * Constructor for a CANdle Device + * @param deviceId The Device ID of the CANdle + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number + */ + CANdle(int deviceId, std::string const &canbus = ""); + ~CANdle(); + + /** + * Gets the Voltage of VBat as measured by CANdle + * @return Voltage of VBat + */ + double GetBusVoltage(); + /** + * Gets the Voltage of the 5V line as measured by CANdle + * @return Voltage of the 5V line + */ + double Get5VRailVoltage(); + /** + * Gets the low-side current as measured by CANdle + * @return Current in Amps + */ + double GetCurrent(); + /** + * Gets the temperature of the CANdle in Celcius + * @return Temperature in Celcius + */ + double GetTemperature(); + /** + * Gets the applied vbat modulation in percent. + * If the CANdle is configured to always enable VBat, this returns 1 + * If the CANdle is confgigured to always disable VBat, this returns 0 + * Otherwise it returns the last set Modulation as a value [0, 1] + * @return VBat Output Modulation + */ + double GetVBatModulation(); + /** + * Gets the maximum number of simultaneous animations this version of CANdle firmware supports. + * If you specify an animation slot >= to this return, Phoenix will error out. + * You can also get the maximum count from a self-test snapshot. + * @return Maximum number of simultaneous animations this version of firmware supports. + */ + int GetMaxSimultaneousAnimationCount(); + + /** + * Animates the CANdle with the passed-in animation + * If the animation changes after calling this function, + * it must be passed into animate again for the changes to take effect + * @param animation The animation that CANdle will run. If this is null, it will clear the animation at the specified slot + * @param animSlot The animation slot to use for the animation, range is [0, getMaxSimultaneousAnimationCount()) exclusive + * @return ErrorCode generated by function. OK indicates no error. + */ + ctre::phoenix::ErrorCode Animate(Animation& animation, int animSlot = 0); + + /** + * Clears the animation occurring in the selected selected animSlot. + * @param animSlot Animation slot to clear + * @return ErrorCode generated by function. OK indicates no error. + */ + ctre::phoenix::ErrorCode ClearAnimation(int animSlot); + + /** + * Sets a block of LEDs to the specified color + * @param r The amount of Red to set, range is [0, 255] + * @param g The amount of Green to set, range is [0, 255] + * @param b The amount of Blue to set, range is [0, 255] + * @param w The amount of White to set, range is [0, 255]. This only applies for LED strips with white in them. + * @param startIdx Where to start setting the LEDs + * @param count The number of LEDs to apply this to + * @return ErrorCode generated by function. OK indicates no error. + */ + ctre::phoenix::ErrorCode SetLEDs(int r, int g, int b, int w = 0, int startIdx = 0, int count = 512); + + /** + * Modulates the VBat output to the specified duty cycle percentage + * This function will only do something if the CANdle's VBatOutput is configured to Modulated + * @param dutyCyclePrcnt The duty cycle of the output modulation [0, 1] + * @return ErrorCode generated by function. OK indicates no error. + */ + ErrorCode ModulateVBatOutput(double dutyCyclePrcnt); + + /** + * Configures what the CANdle should do if it loses communications to the Controller + * @param disableWhenLOS Set to true to disable the LEDs on Loss of Signal. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode generated by function. OK indicates no error. + */ + ErrorCode ConfigLOSBehavior(bool disableWhenLOS, int timeoutMs = 0); + /** + * Configures the type of LED the CANdle controls + * @param type The type of the LEDs the CANdle controls + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode generated by function. OK indicates no error. + */ + ErrorCode ConfigLEDType(LEDStripType type, int timeoutMs = 0); + /** + * Configures the brightness scalar to be applied to every LED output. + * This value is bounded to [0, 1]. + * + * Setting this to 1 will allow the LEDs to function at max brightness. + * Setting this to 0.5 will scale all values to half their applied value. + * Setting this to 0 will turn off the LEDs. + * + * Forcing the LEDs off this way may be useful in certain testing circumstances + * but is generally not necessary. Self-test (Tuner) may be used to verify what + * the effective scalar is in case user forgot to restore the scalar to a + * non-zero value. + * + * @param brightness Value from [0, 1] that will scale the LED output. + * @param timeoutMs + Timeout value in ms. If nonzero, function will wait for + config success and report an error if it times out. + If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigBrightnessScalar(double brightness, int timeoutMs = 0); + + /** + * Configures how the status led will behave when the CANdle is actively controlling LEDs + * If the CANdle is LOS or not actively commanded a value, it will always turn on its status LED. + * @param disableWhenRunning Disables the status LED when the CANdle is running + * @param timeoutMs + Timeout value in ms. If nonzero, function will wait for + config success and report an error if it times out. + If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigStatusLedState(bool disableWhenRunning, int timeoutMs = 0); + /** + * Configures how the VBat Output will behave + * @param mode VBat Output Behavior + * @param timeoutMs + Timeout value in ms. If nonzero, function will wait for + config success and report an error if it times out. + If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigVBatOutput(VBatOutputMode mode, int timeoutMs = 0); + /** + * Configures the enable state for the 5V rail. This also affects the on-board LEDs. + * @param v5Enabled True to enable the 5V rail. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode generated by function. OK indicates no error. + */ + ErrorCode configV5Enabled(bool v5Enabled, int timeoutMs = 0); + + /** + * Gets a parameter. Generally this is not used. + * This can be utilized in + * - Using new features without updating API installation. + * - Errata workarounds to circumvent API implementation. + * - Allows for rapid testing / unit testing of firmware. + * + * @param param + * Parameter enumeration. + * @param ordinal + * Ordinal of parameter. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Value of parameter. + */ + double ConfigGetParameter(ParamEnum param, int ordinal, int timeoutMs = 0); + /** + * Sets a parameter. Generally this is not used. + * This can be utilized in + * - Using new features without updating API installation. + * - Errata workarounds to circumvent API implementation. + * - Allows for rapid testing / unit testing of firmware. + * + * @param param + * Parameter enumeration. + * @param value + * Value of parameter. + * @param subValue + * Subvalue for parameter. Maximum value of 255. + * @param ordinal + * Ordinal of parameter. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigSetParameter(ParamEnum param, double value, int subValue = 0, int ordinal = 0, int timeoutMs = 0); + /** + * Gets the value of a custom parameter. This is for arbitrary use. + * + * Sometimes it is necessary to save calibration/duty cycle/output + * information in the device. Particularly if the + * device is part of a subsystem that can be replaced. + * + * @param paramIndex + * Index of custom parameter. [0-1] + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Value of the custom param. + */ + int ConfigGetCustomParam(int paramIndex, int timeoutMs = 0); + /** + * Sets the value of a custom parameter. This is for arbitrary use. + * + * Sometimes it is necessary to save calibration/duty cycle/output + * information in the device. Particularly if the + * device is part of a subsystem that can be replaced. + * + * @param newValue + * Value for custom parameter. + * @param paramIndex + * Index of custom parameter. [0-1] + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigSetCustomParam(int paramIndex, int value, int timeoutMs = 0); + /** + * Configures all persistent settings to defaults. + * + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigFactoryDefault(int timeoutMs = 50); + /** + * Gets the CANdle fault status + * + * @param toFill Container for fault statuses. + * @return Error Code generated by function. OK indicates no error. + */ + ErrorCode GetFaults(CANdleFaults& toFill); + /** + * Gets the CANdle sticky fault status + * + * @param toFill Container for sticky fault statuses. + * @return Error Code generated by function. OK indicates no error. + */ + ErrorCode GetStickyFaults(CANdleStickyFaults& toFill); + /** + * Clears the sticky faults. + * + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ClearStickyFaults(int timeoutMs = 0); + /** + * Returns true if the device has reset since last call. + * + * @return Has a Device Reset Occurred? + */ + bool HasResetOccurred(); + /** + * Sets the period of the given status frame. + * + * @param frame + * Frame whose period is to be changed. + * @param periodMs + * Period in ms for the given frame. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode SetStatusFramePeriod(CANdleStatusFrame frame, int periodMs, int timeoutMs = 0); + /** + * Gets the period of the given status frame. + * + * @param frame + * Frame to get the period of. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Period of the given status frame. + */ + int GetStatusFramePeriod(CANdleStatusFrame frame, int timeoutMs = 0); + /** + * Sets the period of the given control frame. + * + * @param frame + * Frame whose period is to be changed. + * @param periodMs + * Period in ms for the given frame. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode SetControlFramePeriod(CANdleControlFrame frame, int periodMs); + + /** + * Configures all persistent settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigAllSettings(CANdleConfiguration allConfigs, int timeoutMs = 50); + /** + * Gets all persistant settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + */ + void GetAllConfigs(CANdleConfiguration allConfigs, int timeoutMs = 50); + + /** + * Call GetLastError() generated by this object. + * Not all functions return an error code but can + * potentially report errors. + * + * This function can be used to retrieve those error codes. + * + * @return The last ErrorCode generated. + */ + ErrorCode GetLastError(); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre + diff --git a/include/ctre/phoenix/led/CANdleConfigUtil.h b/include/ctre/phoenix/led/CANdleConfigUtil.h new file mode 100644 index 0000000..953f53b --- /dev/null +++ b/include/ctre/phoenix/led/CANdleConfigUtil.h @@ -0,0 +1,26 @@ +#pragma once + +#include "ctre/phoenix/led/CANdleConfiguration.h" +#include "ctre/phoenix/CustomParamConfiguration.h" +#include "ctre/phoenix/Utilities.h" + +namespace ctre{ namespace phoenix{ namespace led{ + +/** + * Util class to help with configuring CANifier + */ +class CANdleConfigUtil : public CustomParamConfigUtil{ + static CANdleConfiguration _default; +public: + + static bool StripTypeDifferent (CANdleConfiguration settings); + static bool BrightnessScalarDifferent (CANdleConfiguration settings); + static bool DisableWhenLOSDifferent (CANdleConfiguration settings); + static bool StatusLedOffWhenActiveDifferent (CANdleConfiguration settings); + static bool VBatOutputModeDifferent (CANdleConfiguration settings); + static bool V5EnabledDifferent (CANdleConfiguration settings); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/CANdleConfiguration.h b/include/ctre/phoenix/led/CANdleConfiguration.h new file mode 100644 index 0000000..dbbe652 --- /dev/null +++ b/include/ctre/phoenix/led/CANdleConfiguration.h @@ -0,0 +1,52 @@ +#pragma once + +#include "ctre/phoenix/CustomParamConfiguration.h" +#include "ctre/phoenix/led/CANdleLedStripType.h" +#include "ctre/phoenix/led/VBatOutputMode.h" +#include + +namespace ctre{ namespace phoenix{ namespace led{ + +/** + * Configurables available to CANifier + */ +struct CANdleConfiguration : public CustomParamConfiguration { + /** + * What type of LEDs the CANdle controls + */ + LEDStripType stripType {LEDStripType::RGB}; + /** + * Brightness scalar for all LEDs controlled + */ + double brightnessScalar {1.0}; + /** + * True to turn off LEDs when Loss of Signal occurrs + */ + bool disableWhenLOS {false}; + /** + * True to turn off Status LED when CANdle is actively being controlled + */ + bool statusLedOffWhenActive {false}; + /** + * The behavior of VBat output + */ + VBatOutputMode vBatOutputMode {VBatOutputMode::On}; + /** + * True to turn off the 5V rail. This turns off the on-board LEDs as well. + */ + bool v5Enabled {false}; + + CANdleConfiguration(); + + /** + * @param prependString + * String to prepend to configs + * @return String representation of configs + */ + std::string toString(std::string prependString = ""); + +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/CANdleControlFrame.h b/include/ctre/phoenix/led/CANdleControlFrame.h new file mode 100644 index 0000000..ec072a7 --- /dev/null +++ b/include/ctre/phoenix/led/CANdleControlFrame.h @@ -0,0 +1,15 @@ +#pragma once + +namespace ctre { +namespace phoenix { +namespace led { + +/** Enumerated type for status frame types. */ +enum CANdleControlFrame { + CANdle_Control_1_General = 0x040000, + CANdle_Control_2_ModulatedVBatOutput = 0x040040, +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/CANdleFaults.h b/include/ctre/phoenix/led/CANdleFaults.h new file mode 100644 index 0000000..fbc9c6f --- /dev/null +++ b/include/ctre/phoenix/led/CANdleFaults.h @@ -0,0 +1,219 @@ +#pragma once + +#include + +namespace ctre { +namespace phoenix { +namespace led{ + +/** + * Faults available to CANdle (Currently has none) + */ +struct CANdleFaults { + /** + * Device detects hardware failure + */ + bool HardwareFault; + /** + * API error detected. Make sure API and firmware versions are compatible. + */ + bool APIError; + /** + * Boot while receiving an enable frame + */ + bool BootDuringEnable; + /** + * VBat is under 5V + */ + bool VBatTooLow; + /** + * VBat is over 30V + */ + bool VBatTooHigh; + /** + * 5V Line is under 4 V + */ + bool V5TooLow; + /** + * 5V Line is over 6V + */ + bool V5TooHigh; + /** + * Exceeded output current of 6 amps + */ + bool SoftwareFuse; + /** + * Device is over temperature + */ + bool ThermalFault; + /** + * Output pin is shorted to something + */ + bool ShortCircuit; + + /** + * @return true if any faults are tripped + */ + bool HasAnyFault() const { + return HardwareFault | + APIError | + BootDuringEnable | + VBatTooLow | + VBatTooHigh | + V5TooLow | + V5TooHigh | + SoftwareFuse | + ThermalFault | + ShortCircuit; + } + /** + * @return Current fault list as a bit field + */ + int ToBitfield() const { + uint64_t commonFaults = 0; + commonFaults |= ShortCircuit ? 1 : 0; commonFaults <<= 1; + commonFaults |= ThermalFault ? 1 : 0; commonFaults <<= 1; + commonFaults |= SoftwareFuse ? 1 : 0; commonFaults <<= 1; + commonFaults |= V5TooLow ? 1 : 0; commonFaults <<= 1; + commonFaults |= V5TooHigh ? 1 : 0; commonFaults <<= 1; + commonFaults |= VBatTooLow ? 1 : 0; commonFaults <<= 1; + commonFaults |= VBatTooHigh ? 1 : 0; commonFaults <<= 1; + commonFaults |= BootDuringEnable ? 1 : 0; commonFaults <<= 1; + commonFaults |= APIError ? 1 : 0; commonFaults <<= 1; + commonFaults |= HardwareFault ? 1 : 0; + + return commonFaults; + } + void Update(uint64_t bits) { + uint64_t mask = 1; + HardwareFault = (bits & mask) ? true : false; mask <<= 1; + APIError = (bits & mask) ? true : false; mask <<= 1; + BootDuringEnable = (bits & mask) ? true : false; mask <<= 1; + VBatTooHigh = (bits & mask) ? true : false; mask <<= 1; + VBatTooLow = (bits & mask) ? true : false; mask <<= 1; + V5TooHigh = (bits & mask) ? true : false; mask <<= 1; + V5TooLow = (bits & mask) ? true : false; mask <<= 1; + SoftwareFuse = (bits & mask) ? true : false; mask <<= 1; + ThermalFault = (bits & mask) ? true : false; mask <<= 1; + ShortCircuit = (bits & mask) ? true : false; mask <<= 1; + } + /** + * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + CANdleFaults(int bits) { + Update(bits); + } + CANdleFaults() { + Update(0); + } +}; +/** + * Faults available to CANdle (Currently has none) + */ +struct CANdleStickyFaults { + /** + * Device detects hardware failure + */ + bool HardwareFault; + /** + * API error detected. Make sure API and firmware versions are compatible. + */ + bool APIError; + /** + * Boot while receiving an enable frame + */ + bool BootDuringEnable; + /** + * VBat is under 5V + */ + bool VBatTooLow; + /** + * VBat is over 30V + */ + bool VBatTooHigh; + /** + * 5V Line is under 4 V + */ + bool V5TooLow; + /** + * 5V Line is over 6V + */ + bool V5TooHigh; + /** + * Exceeded output current of 6 amps + */ + bool SoftwareFuse; + /** + * Device is over temperature + */ + bool ThermalFault; + /** + * Output pin is shorted to something + */ + bool ShortCircuit; + + /** + * @return true if any faults are tripped + */ + bool HasAnyFault() const { + return HardwareFault | + APIError | + BootDuringEnable | + VBatTooLow | + VBatTooHigh | + V5TooLow | + V5TooHigh | + SoftwareFuse | + ThermalFault | + ShortCircuit; + } + /** + * @return Current fault list as a bit field + */ + int ToBitfield() const { + uint64_t commonFaults = 0; + commonFaults |= ShortCircuit ? 1 : 0; commonFaults <<= 1; + commonFaults |= ThermalFault ? 1 : 0; commonFaults <<= 1; + commonFaults |= SoftwareFuse ? 1 : 0; commonFaults <<= 1; + commonFaults |= V5TooLow ? 1 : 0; commonFaults <<= 1; + commonFaults |= V5TooHigh ? 1 : 0; commonFaults <<= 1; + commonFaults |= VBatTooLow ? 1 : 0; commonFaults <<= 1; + commonFaults |= VBatTooHigh ? 1 : 0; commonFaults <<= 1; + commonFaults |= BootDuringEnable ? 1 : 0; commonFaults <<= 1; + commonFaults |= APIError ? 1 : 0; commonFaults <<= 1; + commonFaults |= HardwareFault ? 1 : 0; + + return commonFaults; + } + void Update(uint64_t bits) { + uint64_t mask = 1; + HardwareFault = (bits & mask) ? true : false; mask <<= 1; + APIError = (bits & mask) ? true : false; mask <<= 1; + BootDuringEnable = (bits & mask) ? true : false; mask <<= 1; + VBatTooHigh = (bits & mask) ? true : false; mask <<= 1; + VBatTooLow = (bits & mask) ? true : false; mask <<= 1; + V5TooHigh = (bits & mask) ? true : false; mask <<= 1; + V5TooLow = (bits & mask) ? true : false; mask <<= 1; + SoftwareFuse = (bits & mask) ? true : false; mask <<= 1; + ThermalFault = (bits & mask) ? true : false; mask <<= 1; + ShortCircuit = (bits & mask) ? true : false; mask <<= 1; + } + /** + * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + CANdleStickyFaults(int bits) { + Update(bits); + } + CANdleStickyFaults() { + Update(0); + } +}; + +} // led +} // phoenix +} // ctre + diff --git a/include/ctre/phoenix/led/CANdleLedStripType.h b/include/ctre/phoenix/led/CANdleLedStripType.h new file mode 100644 index 0000000..b1ea11e --- /dev/null +++ b/include/ctre/phoenix/led/CANdleLedStripType.h @@ -0,0 +1,36 @@ +#pragma once + +namespace ctre{ namespace phoenix{ namespace led{ + /** + * The various LED types that the CANdle can support + */ + enum LEDStripType { + /** + * LEDs that are controlled by Green-Red-Blue values + */ + GRB = 0, + /** + * LEDs that are controlled by Red-Green-Blue values + */ + RGB = 1, + /** + * LEDs that are controlled by Blue-Red-Green values + */ + BRG = 2, + /** + * LEDs that are controlled by Green-Red-Blue-White values + */ + GRBW = 6, + /** + * LEDs that are controlled by Red-Green-Blue-White values + */ + RGBW = 7, + /** + * LEDs that are controlled by Blue-Red-Green-White values + */ + BRGW = 8, + }; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/CANdleStatusFrame.h b/include/ctre/phoenix/led/CANdleStatusFrame.h new file mode 100644 index 0000000..03e0cb1 --- /dev/null +++ b/include/ctre/phoenix/led/CANdleStatusFrame.h @@ -0,0 +1,20 @@ +#pragma once + +namespace ctre { +namespace phoenix { +namespace led { + +/** Enumerated type for status frame types. */ +enum CANdleStatusFrame { + CANdleStatusFrame_Status_1_General = 0x041400, + CANdleStatusFrame_Status_2_Startup = 0x041440, + CANdleStatusFrame_Status_3_FirmwareApiStatus = 0x041480, + CANdleStatusFrame_Status_4_ControlTelem = 0x0414C0, + CANdleStatusFrame_Status_5_PixelPulseTrain = 0x041500, + CANdleStatusFrame_Status_6_BottomPixels = 0x041540, + CANdleStatusFrame_Status_7_TopPixels = 0x041580, +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/ColorFlowAnimation.h b/include/ctre/phoenix/led/ColorFlowAnimation.h new file mode 100644 index 0000000..0cca714 --- /dev/null +++ b/include/ctre/phoenix/led/ColorFlowAnimation.h @@ -0,0 +1,48 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that gradually lights the entire LED strip one LED at a time. + */ +class ColorFlowAnimation : public BaseTwoSizeAnimation { +public: + /** + * What direction does the color go + */ + enum Direction { + /** + * Color goes forward, away from CANdle + */ + Forward = 0, + /** + * Color goes backward, toward CANdle + */ + Backward = 1, + }; + + /** + * Constructor for a ColorFlowAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed How many LEDs is the CANdle controlling + * @param direction What direction should the color move in + * @param ledOffset Where to start the animation + */ + ColorFlowAnimation(int r, int g, int b, int w, double speed = 1, int numLed = -1, Direction direction = Direction::Forward, int ledOffset = 0); + + /** + * Sets the direction the color flow moves in + * @param direction What direction should the color move in + */ + void SetDirection(Direction direction); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/FireAnimation.h b/include/ctre/phoenix/led/FireAnimation.h new file mode 100644 index 0000000..76aec08 --- /dev/null +++ b/include/ctre/phoenix/led/FireAnimation.h @@ -0,0 +1,37 @@ +#pragma once + +#include "ctre/phoenix/led/BaseStandardAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that looks similarly to a flame flickering + */ +class FireAnimation : public BaseStandardAnimation { +public: + /** + * Constructor for a FireAnimation + * @param brightness How bright should the animation be [0, 1] + * @param speed How fast will the flame be processed at [0, 1] + * @param numLed How many LEDs is the CANdle controlling + * @param sparking The rate at which the Fire "Sparks" [0, 1] + * @param cooling The rate at which the Fire "Cools" along the travel [0, 1] + * @param reverseDirection True to reverse the animation direction, so instead of fire going "away" from the CANdle, it will go "toward" the CANdle. + * @param ledOffset Where to start the animation + */ + FireAnimation(double brightness = 1, double speed = 1, int numLed = -1, double sparking = 1, double cooling = 1, bool reverseDirection = false, int ledOffset = 0); + /** + * Sets the sparking value of the FireAnimation + * @param sparking The rate at which the Fire "Sparks" [0, 1] + */ + void SetSparking(double sparking); + /** + * Sets the cooling value of the FireAnimation + * @param cooling The rate at which the Fire "Cools" [0, 1] + */ + void SetCooling(double cooling); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/LarsonAnimation.h b/include/ctre/phoenix/led/LarsonAnimation.h new file mode 100644 index 0000000..59e93df --- /dev/null +++ b/include/ctre/phoenix/led/LarsonAnimation.h @@ -0,0 +1,58 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that sends a pocket of light across the LED strip. + */ +class LarsonAnimation : public BaseTwoSizeAnimation { +public: + /** + * How the pocket of light behaves when it reaches the end of the strip + */ + enum BounceMode { + /** + * Bounce the pocket as soon as the first LED reaches the end of the strip + */ + Front = 0, + /** + * Bounce the pocket once it is midway through the end of the strip + */ + Center = 1, + /** + * Bounce the pocket once all the LEDs are off the strip + */ + Back = 2, + }; + /** + * Constructor for a LarsonAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed The number of LEDs the CANdle will control + * @param mode How the pocket of LEDs will behave once it reaches the end of the strip + * @param size How large the pocket of LEDs are [0, 7] + * @param ledOffset Where to start the animation + */ + LarsonAnimation(int r, int g, int b, int w = 0, double speed = 1, int numLed = -1, BounceMode mode = BounceMode::Front, int size = 2, int ledOffset = 0); + + /** + * Sets the bounce mode of the animation. + * @param mode How the pocket of LEDs will behave once it reaches the end of the strip + */ + void SetBounceMode(BounceMode mode); + + /** + * Sets the size of the pocket of LEDs + * @param size The size of the pocket [0, 7] + */ + void SetSize(int size); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/RainbowAnimation.h b/include/ctre/phoenix/led/RainbowAnimation.h new file mode 100644 index 0000000..a30c209 --- /dev/null +++ b/include/ctre/phoenix/led/RainbowAnimation.h @@ -0,0 +1,25 @@ +#pragma once + +#include "ctre/phoenix/led/BaseStandardAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that creates a rainbow throughout all the LEDs + */ +class RainbowAnimation : public BaseStandardAnimation { +public: + /** + * Constructor for a RainbowAnimation + * @param brightness The brightness of the LEDs [0, 1] + * @param speed How fast the rainbow travels through the leds [0, 1] + * @param numLed How many LEDs are controlled by the CANdle + * @param reverseDirection True to reverse the animation direction, so instead of going "toward" the CANdle, it will go "away" from the CANdle. + * @param ledOffset Where to start the animation + */ + RainbowAnimation(double brightness = 1, double speed = 1, int numLed = -1, bool reverseDirection = false, int ledOffset = 0); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/RgbFadeAnimation.h b/include/ctre/phoenix/led/RgbFadeAnimation.h new file mode 100644 index 0000000..1851798 --- /dev/null +++ b/include/ctre/phoenix/led/RgbFadeAnimation.h @@ -0,0 +1,24 @@ +#pragma once + +#include "ctre/phoenix/led/BaseStandardAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that fades all the LEDs of a strip simultaneously between Red, Green, and Blue + */ +class RgbFadeAnimation : public BaseStandardAnimation { +public: + /** + * Constructor for an RgbFadeAnimation + * @param brightness How bright the LEDs are [0, 1] + * @param speed How fast the LEDs fade between Red, Green, and Blue [0, 1] + * @param numLed How many LEDs are controlled by the CANdle + * @param ledOffset Where to start the animation + */ + RgbFadeAnimation(double brightness = 1, double speed = 1, int numLed = -1, int ledOffset = 0); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/SingleFadeAnimation.h b/include/ctre/phoenix/led/SingleFadeAnimation.h new file mode 100644 index 0000000..f03f336 --- /dev/null +++ b/include/ctre/phoenix/led/SingleFadeAnimation.h @@ -0,0 +1,27 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that fades into and out of a specified color + */ +class SingleFadeAnimation : public BaseTwoSizeAnimation { +public: + /** + * Constructor for a SingleFadeAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed How many LEDs the CANdle controls + * @param ledOffset Where to start the animation + */ + SingleFadeAnimation(int r, int g, int b, int w = 0, double speed = 1, int numLed = -1, int ledOffset = 0); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/StrobeAnimation.h b/include/ctre/phoenix/led/StrobeAnimation.h new file mode 100644 index 0000000..eabbdab --- /dev/null +++ b/include/ctre/phoenix/led/StrobeAnimation.h @@ -0,0 +1,27 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that strobes the LEDs a specified color + */ +class StrobeAnimation : public BaseTwoSizeAnimation { +public: + /** + * Constructor for a StrobeAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed How many LEDs the CANdle controls + * @param ledOffset Where to start the animation + */ + StrobeAnimation(int r, int g, int b, int w = 0, double speed = 1, int numLed = -1, int ledOffset = 0); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/TwinkleAnimation.h b/include/ctre/phoenix/led/TwinkleAnimation.h new file mode 100644 index 0000000..982f490 --- /dev/null +++ b/include/ctre/phoenix/led/TwinkleAnimation.h @@ -0,0 +1,71 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that randomly turns LEDs on and off to a certain color + */ +class TwinkleAnimation : public BaseTwoSizeAnimation { +public: + /** + * The percentage of LEDs that are allowed to be on at any one point + */ + enum TwinklePercent { + /** + * All the LEDs are allowed to turn on + */ + Percent100 = 0, + /** + * 88% of LEDs are allowed to turn on + */ + Percent88 = 1, + /** + * 76% of LEDs are allowed to turn on + */ + Percent76 = 2, + /** + * 64% of LEDs are allowed to turn on + */ + Percent64 = 3, + /** + * 42% of LEDs are allowed to turn on + */ + Percent42 = 4, + /** + * 30% of LEDs are allowed to turn on + */ + Percent30 = 5, + /** + * 18% of LEDs are allowed to turn on + */ + Percent18 = 6, + /** + * 6% of LEDs are allowed to turn on + */ + Percent6 = 7, + }; + + /** + * Constructor for a TwinkleAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed How many LEDs the CANdle controls + * @param divider What percentage of LEDs can be on at any point + * @param ledOffset Where to start the animation + */ + TwinkleAnimation(int r, int g, int b, int w = 0, double speed = 1, int numLed = -1, TwinklePercent divider = TwinklePercent::Percent100, int ledOffset = 0); + /** + * Sets the percentage of LEDs that are allowed on + * @param divider The percentage of LEDs that are allowed on at any point + */ + void SetDivider(TwinklePercent divider); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/TwinkleOffAnimation.h b/include/ctre/phoenix/led/TwinkleOffAnimation.h new file mode 100644 index 0000000..4ed3cd8 --- /dev/null +++ b/include/ctre/phoenix/led/TwinkleOffAnimation.h @@ -0,0 +1,71 @@ +#pragma once + +#include "ctre/phoenix/led/BaseTwoSizeAnimation.h" + +namespace ctre {namespace phoenix {namespace led { + +/** + * Animation that randomly turns on LEDs, until it reaches the maximum count and turns them all off + */ +class TwinkleOffAnimation : public BaseTwoSizeAnimation { +public: + /** + * The maximum percentage of LEDs that are allowed to turn on + */ + enum TwinkleOffPercent { + /** + * All the LEDs are allowed to turn on + */ + Percent100 = 0, + /** + * 88% of LEDs are allowed to turn on + */ + Percent88 = 1, + /** + * 76% of LEDs are allowed to turn on + */ + Percent76 = 2, + /** + * 64% of LEDs are allowed to turn on + */ + Percent64 = 3, + /** + * 42% of LEDs are allowed to turn on + */ + Percent42 = 4, + /** + * 30% of LEDs are allowed to turn on + */ + Percent30 = 5, + /** + * 18% of LEDs are allowed to turn on + */ + Percent18 = 6, + /** + * 6% of LEDs are allowed to turn on + */ + Percent6 = 7, + }; + + /** + * Constructor for a TwinkleAnimation + * @param r How much red should the color have [0, 255] + * @param g How much green should the color have [0, 255] + * @param b How much blue should the color have [0, 255] + * @param w How much white should the color have [0, 255] + * @param speed How fast should the color travel the strip [0, 1] + * @param numLed How many LEDs the CANdle controls + * @param divider What percentage of LEDs can be on at any point + * @param ledOffset Where to start the animation + */ + TwinkleOffAnimation(int r, int g, int b, int w = 0, double speed = 1, int numLed = -1, TwinkleOffPercent divider = TwinkleOffPercent::Percent100, int ledOffset = 0); + /** + * Sets the percentage of LEDs that are allowed on + * @param divider The percentage of LEDs that are allowed on at any point + */ + void SetDivider(TwinkleOffPercent divider); +}; + +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/led/VBatOutputMode.h b/include/ctre/phoenix/led/VBatOutputMode.h new file mode 100644 index 0000000..2ce3019 --- /dev/null +++ b/include/ctre/phoenix/led/VBatOutputMode.h @@ -0,0 +1,24 @@ +#pragma once + +namespace ctre{ namespace phoenix{ namespace led{ + + /** + * The various methods of managing the VBat output behavior + */ + enum VBatOutputMode { + /** + * VBat output is on at full power, no modulation + */ + On = 0, + /** + * VBat output is off, no modulation + */ + Off = 1, + /** + * VBat output is on at the specified modulation + */ + Modulated = 2, + }; +} // namespace led +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/motorcontrol/FeedbackDevice.h b/include/ctre/phoenix/motorcontrol/FeedbackDevice.h index bf4c28a..04adbe9 100644 --- a/include/ctre/phoenix/motorcontrol/FeedbackDevice.h +++ b/include/ctre/phoenix/motorcontrol/FeedbackDevice.h @@ -29,7 +29,7 @@ namespace ctre { */ Tachometer = 4, /** - * CTRE Mag Encoder in Relative mode or + * CTRE Mag Encoder in Absolute mode or * any other device that uses PWM to encode its output */ PulseWidthEncodedPosition = 8, @@ -88,7 +88,7 @@ namespace ctre { */ Tachometer = 4, /** - * CTRE Mag Encoder in Relative mode or + * CTRE Mag Encoder in Absolute mode or * any other device that uses PWM to encode its output */ PulseWidthEncodedPosition = 8, diff --git a/include/ctre/phoenix/motorcontrol/IMotorController.h b/include/ctre/phoenix/motorcontrol/IMotorController.h index a81636e..747e9d0 100644 --- a/include/ctre/phoenix/motorcontrol/IMotorController.h +++ b/include/ctre/phoenix/motorcontrol/IMotorController.h @@ -23,6 +23,11 @@ namespace ctre { namespace phoenix { namespace motorcontrol { +namespace can { +// Forward-Proto BaseTalon +class BaseTalon; +} + /** * Interface for motor controllers */ @@ -51,22 +56,6 @@ class IMotorController: public virtual IFollower { */ virtual void Set(ControlMode Mode, double demand) = 0; /** - * @deprecated use 4 parameter set - * @param Mode Sets the appropriate output on the talon, depending on the mode. - * @param demand0 The output value to apply. - * such as advanced feed forward and/or auxiliary close-looping in firmware. - * In PercentOutput, the output is between -1.0 and 1.0, with 0.0 as stopped. - * In Current mode, output value is in amperes. - * In Velocity mode, output value is in position change / 100ms. - * In Position mode, output value is in encoder ticks or an analog value, - * depending on the sensor. See - * In Follower mode, the output value is the integer device ID of the talon to - * duplicate. - * - * @param demand1 Supplemental value. This will also be control mode specific for future features. - */ - virtual void Set(ControlMode Mode, double demand0, double demand1) = 0; - /** * @param mode Sets the appropriate output on the talon, depending on the mode. * @param demand0 The output value to apply. * such as advanced feed forward and/or auxiliary close-looping in firmware. @@ -420,6 +409,23 @@ class IMotorController: public virtual IFollower { * @return Error Code generated by function. 0 indicates no error. */ virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::sensors::CANCoder &canCoderRef, int remoteOrdinal, int timeoutMs = 0)= 0; + /** + * Select what remote device and signal to assign to Remote Sensor 0 or Remote Sensor 1. + * After binding a remote device and signal to Remote Sensor X, you may select Remote Sensor X + * as a PID source for closed-loop features. + * + * @param talonRef + * Talon device reference to use. + * @param remoteOrdinal + * 0 for configuring Remote Sensor 0, + * 1 for configuring Remote Sensor 1 + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::motorcontrol::can::BaseTalon &talonRef, int remoteOrdinal, int timeoutMs = 0)= 0; /** * Select what sensor term should be bound to switch feedback device. * Sensor Sum = Sensor Sum Term 0 - Sensor Sum Term 1 @@ -447,7 +453,7 @@ class IMotorController: public virtual IFollower { * * @return Position of selected sensor (in raw sensor units). */ - virtual int GetSelectedSensorPosition(int pidIdx = 0) = 0; + virtual double GetSelectedSensorPosition(int pidIdx = 0) = 0; /** * Get the selected sensor velocity. * @@ -456,7 +462,7 @@ class IMotorController: public virtual IFollower { * @return selected sensor (in raw sensor units) per 100ms. * See Phoenix-Documentation for how to interpret. */ - virtual int GetSelectedSensorVelocity(int pidIdx = 0) = 0; + virtual double GetSelectedSensorVelocity(int pidIdx = 0) = 0; /** * Sets the sensor position to the given value. * @@ -470,7 +476,7 @@ class IMotorController: public virtual IFollower { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode SetSelectedSensorPosition(int sensorPos, int pidIdx = 0, + virtual ErrorCode SetSelectedSensorPosition(double sensorPos, int pidIdx = 0, int timeoutMs = 50) = 0; //------ status frame period changes ----------// @@ -590,7 +596,7 @@ class IMotorController: public virtual IFollower { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode ConfigForwardSoftLimitThreshold(int forwardSensorLimit, + virtual ErrorCode ConfigForwardSoftLimitThreshold(double forwardSensorLimit, int timeoutMs = 0) = 0; /** * Configures the reverse soft limit threshold. @@ -603,7 +609,7 @@ class IMotorController: public virtual IFollower { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode ConfigReverseSoftLimitThreshold(int reverseSensorLimit, + virtual ErrorCode ConfigReverseSoftLimitThreshold(double reverseSensorLimit, int timeoutMs = 0) = 0; /** * Configures the forward soft limit enable. @@ -733,7 +739,7 @@ class IMotorController: public virtual IFollower { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode Config_IntegralZone(int slotIdx, int izone, + virtual ErrorCode Config_IntegralZone(int slotIdx, double izone, int timeoutMs = 0) = 0; /** * Sets the allowable closed-loop error in the given parameter slot. @@ -749,7 +755,7 @@ class IMotorController: public virtual IFollower { * @return Error Code generated by function. 0 indicates no error. */ virtual ErrorCode ConfigAllowableClosedloopError(int slotIdx, - int allowableCloseLoopError, int timeoutMs = 0) = 0; + double allowableCloseLoopError, int timeoutMs = 0) = 0; /** * Sets the maximum integral accumulator in the given parameter slot. * @@ -860,7 +866,7 @@ class IMotorController: public virtual IFollower { * 0 for Primary closed-loop. 1 for auxiliary closed-loop. * @return Closed-loop error value. */ - virtual int GetClosedLoopError(int pidIdx = 0) = 0; + virtual double GetClosedLoopError(int pidIdx = 0) = 0; /** * Gets the iaccum value. * @@ -904,7 +910,7 @@ class IMotorController: public virtual IFollower { * 0 for Primary closed-loop. 1 for auxiliary closed-loop. * @return The Active Trajectory Position in sensor units. */ - virtual int GetActiveTrajectoryPosition(int pidIdx = 0) = 0; + virtual double GetActiveTrajectoryPosition(int pidIdx = 0) = 0; /** * Gets the active trajectory target velocity for using * MotionMagic/MotionProfile control modes. @@ -913,7 +919,7 @@ class IMotorController: public virtual IFollower { * 0 for Primary closed-loop. 1 for auxiliary closed-loop. * @return The Active Trajectory Velocity in sensor units per 100ms. */ - virtual int GetActiveTrajectoryVelocity(int pidIdx = 0) = 0; + virtual double GetActiveTrajectoryVelocity(int pidIdx = 0) = 0; /** * Gets the active trajectory arbitrary feedforward using * MotionMagic/MotionProfile control modes. @@ -924,14 +930,6 @@ class IMotorController: public virtual IFollower { * (where 0.01 is 1%). */ virtual double GetActiveTrajectoryArbFeedFwd(int pidIdx = 0) = 0; - /** - * Gets the active trajectory target heading using - * MotionMagicArc/MotionProfileArc control modes. - * - * @return The Active Trajectory Heading in degrees. - * @deprecated Use {@link #GetActiveTrajectoryPosition(int)} with 1 passed as an argument instead. - */ - virtual double GetActiveTrajectoryHeading() = 0; //------ Motion Profile Settings used in Motion Magic ----------// /** @@ -946,7 +944,7 @@ class IMotorController: public virtual IFollower { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode ConfigMotionCruiseVelocity(int sensorUnitsPer100ms, + virtual ErrorCode ConfigMotionCruiseVelocity(double sensorUnitsPer100ms, int timeoutMs = 0) = 0; /** * Sets the Motion Magic Acceleration. This is the target acceleration that @@ -961,7 +959,7 @@ class IMotorController: public virtual IFollower { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ErrorCode ConfigMotionAcceleration(int sensorUnitsPer100msPerSec, + virtual ErrorCode ConfigMotionAcceleration(double sensorUnitsPer100msPerSec, int timeoutMs = 0) = 0; /** diff --git a/include/ctre/phoenix/motorcontrol/IMotorControllerEnhanced.h b/include/ctre/phoenix/motorcontrol/IMotorControllerEnhanced.h index cfef323..86c4448 100644 --- a/include/ctre/phoenix/motorcontrol/IMotorControllerEnhanced.h +++ b/include/ctre/phoenix/motorcontrol/IMotorControllerEnhanced.h @@ -2,18 +2,21 @@ #include "ctre/phoenix/motorcontrol/ControlMode.h" #include "ctre/phoenix/motorcontrol/ControlFrame.h" +#include "ctre/phoenix/motorcontrol/IMotorController.h" +#include "ctre/phoenix/motorcontrol/IFollower.h" #include "ctre/phoenix/motorcontrol/NeutralMode.h" #include "ctre/phoenix/motorcontrol/FeedbackDevice.h" #include "ctre/phoenix/motorcontrol/SensorCollection.h" +#include "ctre/phoenix/motorcontrol/SupplyCurrentLimitConfiguration.h" #include "ctre/phoenix/motorcontrol/StatusFrame.h" #include "ctre/phoenix/motorcontrol/LimitSwitchType.h" #include "ctre/phoenix/motorcontrol/Faults.h" #include "ctre/phoenix/motorcontrol/StickyFaults.h" +#include "ctre/phoenix/motorcontrol/VelocityMeasPeriod.h" #include "ctre/phoenix/paramEnum.h" #include "ctre/phoenix/motion/TrajectoryPoint.h" #include "ctre/phoenix/motion/MotionProfileStatus.h" #include "ctre/phoenix/ErrorCode.h" -#include "IFollower.h" namespace ctre { namespace phoenix { @@ -78,6 +81,18 @@ class IMotorControllerEnhanced: public virtual IMotorController { virtual ErrorCode ConfigSelectedFeedbackSensor( RemoteFeedbackDevice feedbackDevice, int pidIdx = 0, int timeoutMs = 0) = 0; + //------ Current Limit ----------// + /** + * Configures the supply-side current limit. + * @param currLimitCfg Current limit configuration + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + virtual ErrorCode ConfigSupplyCurrentLimit(const SupplyCurrentLimitConfiguration& currLimitConfigs, int timeoutMs = 50) = 0; + //------- sensor status --------- // /* in parent */ diff --git a/include/ctre/phoenix/motorcontrol/LimitSwitchType.h b/include/ctre/phoenix/motorcontrol/LimitSwitchType.h index 8d7c3fc..85e4216 100644 --- a/include/ctre/phoenix/motorcontrol/LimitSwitchType.h +++ b/include/ctre/phoenix/motorcontrol/LimitSwitchType.h @@ -12,10 +12,14 @@ enum LimitSwitchSource { * Limit switch directly connected to motor controller */ LimitSwitchSource_FeedbackConnector = 0, + /** + * Use Limit switch connected to Talon on CAN + */ + LimitSwitchSource_RemoteTalon = 1, /** * Use Limit switch connected to TalonSRX on CAN */ - LimitSwitchSource_RemoteTalonSRX = 1, + LimitSwitchSource_RemoteTalonSRX = LimitSwitchSource_RemoteTalon, /** * User Limit switch connected to CANifier */ @@ -32,10 +36,14 @@ enum RemoteLimitSwitchSource { * Don't use limit switch, this is the factory default value */ RemoteLimitSwitchSource_FactoryDefaultOff = 0, + /** + * Use Limit switch connected to Talon on CAN + */ + RemoteLimitSwitchSource_RemoteTalon = 1, /** * Use Limit switch connected to TalonSRX on CAN */ - RemoteLimitSwitchSource_RemoteTalonSRX = 1, + RemoteLimitSwitchSource_RemoteTalonSRX = RemoteLimitSwitchSource_RemoteTalon, /** * User Limit switch connected to CANifier */ @@ -101,7 +109,7 @@ class LimitSwitchRoutines { static std::string toString(LimitSwitchSource value) { switch(value) { case LimitSwitchSource_FeedbackConnector : return "LimitSwitchSource_FeedbackConnector"; - case LimitSwitchSource_RemoteTalonSRX : return "LimitSwitchSource_RemoteTalonSRX"; + case LimitSwitchSource_RemoteTalon : return "LimitSwitchSource_RemoteTalon"; case LimitSwitchSource_RemoteCANifier : return "LimitSwitchSource_RemoteCANifier"; case LimitSwitchSource_Deactivated : return "LimitSwitchSource_Deactivated"; default : return "InvalidValue"; @@ -115,7 +123,7 @@ class LimitSwitchRoutines { static std::string toString(RemoteLimitSwitchSource value) { switch(value) { case RemoteLimitSwitchSource_FactoryDefaultOff: return "None (factory default value)"; - case RemoteLimitSwitchSource_RemoteTalonSRX : return "RemoteLimitSwitchSource_RemoteTalonSRX"; + case RemoteLimitSwitchSource_RemoteTalon : return "RemoteLimitSwitchSource_RemoteTalon"; case RemoteLimitSwitchSource_RemoteCANifier : return "RemoteLimitSwitchSource_RemoteCANifier"; case RemoteLimitSwitchSource_Deactivated : return "RemoteLimitSwitchSource_Deactivated"; default : return "InvalidValue"; diff --git a/include/ctre/phoenix/motorcontrol/SensorCollection.h b/include/ctre/phoenix/motorcontrol/SensorCollection.h index d1401b9..b15191d 100644 --- a/include/ctre/phoenix/motorcontrol/SensorCollection.h +++ b/include/ctre/phoenix/motorcontrol/SensorCollection.h @@ -38,6 +38,9 @@ namespace ctre { /** * Get the position of whatever is in the analog pin of the Talon, regardless of * whether it is actually being used for feedback. + * + * This method relies on the Status 4 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the 24bit analog value. The bottom ten bits is the ADC (0 - 1023) * on the analog pin of the Talon. The upper 14 bits tracks the overflows and underflows @@ -63,6 +66,9 @@ namespace ctre { /** * Get the position of whatever is in the analog pin of the Talon, regardless of whether * it is actually being used for feedback. + * + * This method relies on the Status 4 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the ADC (0 - 1023) on analog pin of the Talon. */ @@ -72,6 +78,9 @@ namespace ctre { /** * Get the velocity of whatever is in the analog pin of the Talon, regardless of * whether it is actually being used for feedback. + * + * This method relies on the Status 4 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the speed in units per 100ms where 1024 units is one rotation. */ @@ -81,6 +90,9 @@ namespace ctre { /** * Get the quadrature position of the Talon, regardless of whether * it is actually being used for feedback. + * + * This method relies on the Status 3 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the quadrature position. */ @@ -128,6 +140,9 @@ namespace ctre { /** * Get the quadrature velocity, regardless of whether * it is actually being used for feedback. + * + * This method relies on the Status 3 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the quadrature velocity in units per 100ms. */ @@ -137,6 +152,9 @@ namespace ctre { /** * Gets pulse width position, regardless of whether * it is actually being used for feedback. + * + * This method relies on the Status 8 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the pulse width position. */ @@ -159,6 +177,9 @@ namespace ctre { /** * Gets pulse width velocity, regardless of whether * it is actually being used for feedback. + * + * This method relies on the Status 8 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the pulse width velocity in units per 100ms (where 4096 units is 1 rotation). */ @@ -167,6 +188,9 @@ namespace ctre { /** * Gets pulse width rise to fall time. + * + * This method relies on the Status 8 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the pulse width rise to fall time in microseconds. */ @@ -175,6 +199,9 @@ namespace ctre { /** * Gets pulse width rise to rise time. + * + * This method relies on the Status 8 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the pulse width rise to rise time in microseconds. */ @@ -183,6 +210,9 @@ namespace ctre { /** * Gets pin state quad a. + * + * This method relies on the Status 3 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the pin state of quad a (1 if asserted, 0 if not asserted). */ @@ -191,6 +221,9 @@ namespace ctre { /** * Gets pin state quad b. + * + * This method relies on the Status 3 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return Digital level of QUADB pin (1 if asserted, 0 if not asserted). */ @@ -199,6 +232,9 @@ namespace ctre { /** * Gets pin state quad index. + * + * This method relies on the Status 3 message, which has a default period of 150ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return Digital level of QUAD Index pin (1 if asserted, 0 if not asserted). */ @@ -207,6 +243,9 @@ namespace ctre { /** * Is forward limit switch closed. + * + * This method relies on the Status 1 message, which has a default period of 10ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return '1' iff forward limit switch is closed, 0 iff switch is open. This function works * regardless if limit switch feature is enabled. Remote limit features do not impact this routine. @@ -216,6 +255,9 @@ namespace ctre { /** * Is reverse limit switch closed. + * + * This method relies on the Status 1 message, which has a default period of 10ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return '1' iff reverse limit switch is closed, 0 iff switch is open. This function works * regardless if limit switch feature is enabled. Remote limit features do not impact this routine. diff --git a/include/ctre/phoenix/motorcontrol/StatusFrame.h b/include/ctre/phoenix/motorcontrol/StatusFrame.h index 01a2011..6a4f89d 100644 --- a/include/ctre/phoenix/motorcontrol/StatusFrame.h +++ b/include/ctre/phoenix/motorcontrol/StatusFrame.h @@ -58,6 +58,11 @@ enum StatusFrameEnhanced { /** * Firmware & API status information */ + Status_15_FirmwareApiStatus = 0x1780, + /** + * Firmware & API status information + * [[deprecated("Use Status_15_FirmwareApiStatus instead.")]] + */ Status_15_FirmareApiStatus = 0x1780, /** * MotionProfile Targets for Auxiliary PID1. @@ -137,6 +142,11 @@ enum StatusFrame { /** * Firmware & API status information */ + Status_15_FirmwareApiStatus_ = 0x1780, + /** + * Firmware & API status information + * [[deprecated("Use Status_15_FirmwareApiStatus_ instead.")]] + */ Status_15_FirmareApiStatus_ = 0x1780, /** * MotionProfile Targets for Auxiliary PID1. diff --git a/include/ctre/phoenix/motorcontrol/TalonFXSensorCollection.h b/include/ctre/phoenix/motorcontrol/TalonFXSensorCollection.h index 2ad0160..98aff87 100644 --- a/include/ctre/phoenix/motorcontrol/TalonFXSensorCollection.h +++ b/include/ctre/phoenix/motorcontrol/TalonFXSensorCollection.h @@ -39,6 +39,9 @@ namespace ctre { * Get the IntegratedSensor position of the Talon FX, regardless of whether * it is actually being used for feedback. The units are 2048 per rotation. * Note : Future versions of software may support scaling features (rotations, radians, degrees, etc) depending on the configuration. + * + * This method relies on the Status 21 message, which has a default period of 240ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the IntegratedSensor position. */ @@ -49,6 +52,9 @@ namespace ctre { * it is actually being used for feedback. This will be within one rotation (2048 units). * The signage and range will depend on the configuration. * Note : Future versions of software may support scaling features (rotations, radians, degrees, etc) depending on the configuration. + * + * This method relies on the Status 21 message, which has a default period of 240ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the IntegratedSensor absolute position. */ @@ -60,6 +66,9 @@ namespace ctre { * One unit represents one position unit per 100ms (2048 position units per 100ms). * The signage and range will depend on the configuration. * Note : Future versions of software may support scaling features (rotations, radians, degrees, etc) depending on the configuration. + * + * This method relies on the Status 21 message, which has a default period of 240ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return the IntegratedSensor velocity. */ @@ -95,6 +104,9 @@ namespace ctre { /** * Is forward limit switch closed. + * + * This method relies on the Status 1 message, which has a default period of 10ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return '1' iff forward limit switch is closed, 0 iff switch is open. This function works * regardless if limit switch feature is enabled. Remote limit features do not impact this routine. @@ -104,6 +116,9 @@ namespace ctre { /** * Is reverse limit switch closed. + * + * This method relies on the Status 1 message, which has a default period of 10ms. For more + * information, see: https://phoenix-documentation.readthedocs.io/en/latest/ch18_CommonAPI.html * * @return '1' iff reverse limit switch is closed, 0 iff switch is open. This function works * regardless if limit switch feature is enabled. Remote limit features do not impact this routine. diff --git a/include/ctre/phoenix/motorcontrol/TalonFXSimCollection.h b/include/ctre/phoenix/motorcontrol/TalonFXSimCollection.h new file mode 100644 index 0000000..a81a173 --- /dev/null +++ b/include/ctre/phoenix/motorcontrol/TalonFXSimCollection.h @@ -0,0 +1,145 @@ +#pragma once + +#include "ctre/phoenix/ErrorCode.h" + +/* forward proto's */ +namespace ctre { + namespace phoenix { + namespace motorcontrol { + namespace can { + class BaseTalon; + } + } + } +} + +namespace ctre { + namespace phoenix { + namespace motorcontrol { + + /** + * Collection of simulation commands available to a TalonFX motor controller. + * + * Use the getSimCollection() routine inside your motor controller to create the respective sim collection. + */ + class TalonFXSimCollection { + public: + /** + * Constructor for TalonFXSimCollection + * @param motorController TalonFX Motor Controller to connect Collection to + */ + TalonFXSimCollection(ctre::phoenix::motorcontrol::can::BaseTalon& motorController); + + /** + * Gets the last error generated by this object. Not all functions return an + * error code but can potentially report errors. This function can be used + * to retrieve those error codes. + * + * @return Last Error Code generated by a function. + */ + ErrorCode GetLastError(); + + /** + * Gets the simulated output voltage across M+ and M- for the motor. + * + * @return applied voltage to the motor in volts + */ + double GetMotorOutputLeadVoltage(); + + /** + * Sets the simulated bus voltage of the TalonFX. + * + * The minimum allowed bus voltage is 4 V - values + * below this will be promoted to 4 V. + * + * @param vbat the bus voltage in volts + * + * @return error code + */ + ErrorCode SetBusVoltage(double vbat); + + /** + * Sets the simulated supply current of the TalonFX. + * + * @param currA the supply current in amps + * + * @return error code + */ + ErrorCode SetSupplyCurrent(double currA); + + /** + * Sets the simulated stator current of the TalonFX. + * + * @param currA the stator current in amps + * + * @return error code + */ + ErrorCode SetStatorCurrent(double currA); + + /** + * Sets the simulated forward limit switch of the TalonFX. + * + * @param isClosed true if the limit switch is closed + * + * @return error code + */ + ErrorCode SetLimitFwd(bool isClosed); + + /** + * Sets the simulated reverse limit switch of the TalonFX. + * + * @param isClosed true if the limit switch is closed + * + * @return error code + */ + ErrorCode SetLimitRev(bool isClosed); + + /** + * Sets the simulated raw integrated sensor position of the TalonFX. + * + * The TalonFX integrates this to calculate the true reported integrated sensor + * position. + * + * When using the WPI Sim GUI, you will notice a readonly 'position' and + * settable 'rawPositionInput'. The readonly signal is the emulated position + * which will match self-test in Tuner and the hardware API. Changes to + * 'rawPositionInput' will be integrated into the emulated position. This way + * a simulator can modify the position without overriding your + * hardware API calls for home-ing your sensor. + * + * Inputs to this function over time should be continuous, + * as user calls of SetSelectedSensorPosition() and SetIntegratedSensorPosition() + * will be accounted for in the calculation. + * + * @param newPos the new raw position in native units + * + * @return error code + */ + ErrorCode SetIntegratedSensorRawPosition(int newPos); + + /** + * Adds to the simulated integrated sensor position of the TalonFX. + * + * @param dPos the change in position in native units + * + * @return error code + */ + ErrorCode AddIntegratedSensorPosition(int dPos); + + /** + * Sets the simulated integrated sensor velocity of the TalonFX. + * + * @param newVel the new velocity in native units per 100ms + * + * @return error code + */ + ErrorCode SetIntegratedSensorVelocity(int newVel); + + private: + int _id; + + }; + + } // namespace motorcontrol + } // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/motorcontrol/TalonSRXSimCollection.h b/include/ctre/phoenix/motorcontrol/TalonSRXSimCollection.h new file mode 100644 index 0000000..ce857cc --- /dev/null +++ b/include/ctre/phoenix/motorcontrol/TalonSRXSimCollection.h @@ -0,0 +1,217 @@ +#pragma once + +#include "ctre/phoenix/ErrorCode.h" + +/* forward proto's */ +namespace ctre { + namespace phoenix { + namespace motorcontrol { + namespace can { + class BaseTalon; + } + } + } +} + +namespace ctre { + namespace phoenix { + namespace motorcontrol { + + /** + * Collection of simulation commands available to a TalonSRX motor controller. + * + * Use the getSimCollection() routine inside your motor controller to create the respective sim collection. + */ + class TalonSRXSimCollection { + public: + /** + * Constructor for TalonSRXSimCollection + * @param motorController TalonSRX Motor Controller to connect Collection to + */ + TalonSRXSimCollection(ctre::phoenix::motorcontrol::can::BaseTalon& motorController); + + /** + * Gets the last error generated by this object. Not all functions return an + * error code but can potentially report errors. This function can be used + * to retrieve those error codes. + * + * @return Last Error Code generated by a function. + */ + ErrorCode GetLastError(); + + /** + * Gets the simulated output voltage across M+ and M- for the motor. + * + * @return applied voltage to the motor in volts + */ + double GetMotorOutputLeadVoltage(); + + /** + * Sets the simulated bus voltage of the TalonSRX. + * + * The minimum allowed bus voltage is 4 V - values + * below this will be promoted to 4 V. + * + * @param vbat the bus voltage in volts + * + * @return error code + */ + ErrorCode SetBusVoltage(double vbat); + + /** + * Sets the simulated supply current of the TalonSRX. + * + * @param currA the supply current in amps + * + * @return error code + */ + ErrorCode SetSupplyCurrent(double currA); + + /** + * Sets the simulated stator current of the TalonSRX. + * + * @param currA the stator current in amps + * + * @return error code + */ + ErrorCode SetStatorCurrent(double currA); + + /** + * Sets the simulated forward limit switch of the TalonSRX. + * + * @param isClosed true if the limit switch is closed + * + * @return error code + */ + ErrorCode SetLimitFwd(bool isClosed); + + /** + * Sets the simulated reverse limit switch of the TalonSRX. + * + * @param isClosed true if the limit switch is closed + * + * @return error code + */ + ErrorCode SetLimitRev(bool isClosed); + + /** + * Sets the simulated analog position of the TalonSRX. + * + * @param newPos the new position in native units + * + * @return error code + */ + ErrorCode SetAnalogPosition(int newPos); + + /** + * Adds to the simulated analog position of the TalonSRX. + * + * @param dPos the change in position in native units + * + * @return error code + */ + ErrorCode AddAnalogPosition(int dPos); + + /** + * Sets the simulated analog velocity of the TalonSRX. + * + * @param newVel the new velocity in native units per 100ms + * + * @return error code + */ + ErrorCode SetAnalogVelocity(int newVel); + + /** + * Sets if the simulated pulse width sensor is connected to the TalonSRX. + * + * @param isConnected true if the pulse width sensor is connected + * + * @return error code + */ + ErrorCode SetPulseWidthConnected(bool isConnected); + + /** + * Sets the simulated pulse width rise to rise time of the TalonSRX. + * + * @param periodUs the pulse width rise to rise time in microseconds + * + * @return error code + */ + ErrorCode SetPulseWidthRiseToRiseUs(double periodUs); + + /** + * Sets the simulated pulse width position of the TalonSRX. + * + * @param newPos the new position in native units + * + * @return error code + */ + ErrorCode SetPulseWidthPosition(int newPos); + + /** + * Adds to the simulated pulse width position of the TalonSRX. + * + * @param dPos the change in position in native units + * + * @return error code + */ + ErrorCode AddPulseWidthPosition(int dPos); + + /** + * Sets the simulated pulse width velocity of the TalonSRX. + * + * @param newVel the new velocity in native units per 100ms + * + * @return error code + */ + ErrorCode SetPulseWidthVelocity(int newVel); + + /** + * Sets the simulated raw quadrature position of the TalonSRX. + * + * The TalonSRX integrates this to calculate the true reported quadrature + * position. + * + * When using the WPI Sim GUI, you will notice a readonly 'position' and + * settable 'rawPositionInput'. The readonly signal is the emulated position + * which will match self-test in Tuner and the hardware API. Changes to + * 'rawPositionInput' will be integrated into the emulated position. This way + * a simulator can modify the position without overriding your + * hardware API calls for home-ing your sensor. + * + * Inputs to this function over time should be continuous, + * as user calls of SetSelectedSensorPosition() and SetQuadraturePosition() + * will be accounted for in the calculation. + * + * @param newPos the new raw position in native units + * + * @return error code + */ + ErrorCode SetQuadratureRawPosition(int newPos); + + /** + * Adds to the simulated quadrature position of the TalonSRX. + * + * @param dPos the change in position in native units + * + * @return error code + */ + ErrorCode AddQuadraturePosition(int dPos); + + /** + * Sets the simulated quadrature velocity of the TalonSRX. + * + * @param newVel the new velocity in native units per 100ms + * + * @return error code + */ + ErrorCode SetQuadratureVelocity(int newVel); + + private: + int _id; + + }; + + } // namespace motorcontrol + } // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/motorcontrol/VictorSPXSimCollection.h b/include/ctre/phoenix/motorcontrol/VictorSPXSimCollection.h new file mode 100644 index 0000000..72cab27 --- /dev/null +++ b/include/ctre/phoenix/motorcontrol/VictorSPXSimCollection.h @@ -0,0 +1,68 @@ +#pragma once + +#include "ctre/phoenix/ErrorCode.h" + +/* forward proto's */ +namespace ctre { + namespace phoenix { + namespace motorcontrol { + namespace can { + class BaseMotorController; + } + } + } +} + +namespace ctre { + namespace phoenix { + namespace motorcontrol { + + /** + * Collection of simulation commands available to a VictorSPX motor controller. + * + * Use the getSimCollection() routine inside your motor controller to create the respective sim collection. + */ + class VictorSPXSimCollection { + public: + /** + * Constructor for VictorSPXSimCollection + * @param motorController VictorSPX Motor Controller to connect Collection to + */ + VictorSPXSimCollection(ctre::phoenix::motorcontrol::can::BaseMotorController& motorController); + + /** + * Gets the last error generated by this object. Not all functions return an + * error code but can potentially report errors. This function can be used + * to retrieve those error codes. + * + * @return Last Error Code generated by a function. + */ + ErrorCode GetLastError(); + + /** + * Gets the simulated output voltage across M+ and M- for the motor. + * + * @return applied voltage to the motor in volts + */ + double GetMotorOutputLeadVoltage(); + + /** + * Sets the simulated bus voltage of the VictorSPX. + * + * The minimum allowed bus voltage is 4 V - values + * below this will be promoted to 4 V. + * + * @param vbat the bus voltage in volts + * + * @return error code + */ + ErrorCode SetBusVoltage(double vbat); + + private: + int _id; + + }; + + } // namespace motorcontrol + } // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/motorcontrol/can/BaseMotorController.h b/include/ctre/phoenix/motorcontrol/can/BaseMotorController.h index 8188ba0..512112b 100644 --- a/include/ctre/phoenix/motorcontrol/can/BaseMotorController.h +++ b/include/ctre/phoenix/motorcontrol/can/BaseMotorController.h @@ -16,6 +16,8 @@ #include "ctre/phoenix/motion/BufferedTrajectoryPointStream.h" #include "ctre/phoenix/CANBusAddressable.h" #include "ctre/phoenix/CustomParamConfiguration.h" +#include "ctre/phoenix/motorcontrol/VictorSPXSimCollection.h" +#include "ctre/phoenix/sensors/SensorVelocityMeasPeriod.h" #include @@ -179,12 +181,12 @@ namespace ctre { * accumulator is automatically cleared. This ensures than integral wind up * events will stop after the sensor gets far enough from its target. */ - int integralZone; + double integralZone; /** * Allowable closed loop error to neutral (in native units) * */ - int allowableClosedloopError; + double allowableClosedloopError; /** * Max integral accumulator (in native units) */ @@ -203,8 +205,8 @@ namespace ctre { kI(0.0), kD(0.0), kF(0.0), - integralZone(0), - allowableClosedloopError(0), + integralZone(0.0), + allowableClosedloopError(0.0), maxIntegralAccumulator(0.0), closedLoopPeakOutput(1.0), closedLoopPeriod(1) @@ -313,7 +315,7 @@ namespace ctre { /** * Desired period for velocity measurement */ - VelocityMeasPeriod velocityMeasurementPeriod; + ctre::phoenix::sensors::SensorVelocityMeasPeriod velocityMeasurementPeriod; /** * Desired window for velocity measurement */ @@ -321,11 +323,11 @@ namespace ctre { /** * Threshold for soft limits in forward direction (in raw sensor units) */ - int forwardSoftLimitThreshold; + double forwardSoftLimitThreshold; /** * Threshold for soft limits in reverse direction (in raw sensor units) */ - int reverseSoftLimitThreshold; + double reverseSoftLimitThreshold; /** * Enable forward soft limit */ @@ -373,11 +375,11 @@ namespace ctre { /** * Motion Magic cruise velocity in raw sensor units per 100 ms. */ - int motionCruiseVelocity; + double motionCruiseVelocity; /** * Motion Magic acceleration in (raw sensor units per 100 ms) per second. */ - int motionAcceleration; + double motionAcceleration; /** * Zero to use trapezoidal motion during motion magic. [1,8] for S-Curve, higher value for greater smoothing. */ @@ -440,15 +442,15 @@ namespace ctre { neutralDeadband(41.0 / 1023.0), voltageCompSaturation(0.0), voltageMeasurementFilter(32), - velocityMeasurementPeriod(Period_100Ms), + velocityMeasurementPeriod(ctre::phoenix::sensors::SensorVelocityMeasPeriod::Period_100Ms), velocityMeasurementWindow(64), - forwardSoftLimitThreshold(0), - reverseSoftLimitThreshold(0), + forwardSoftLimitThreshold(0.0), + reverseSoftLimitThreshold(0.0), forwardSoftLimitEnable(false), reverseSoftLimitEnable(false), auxPIDPolarity(false), - motionCruiseVelocity(0), - motionAcceleration(0), + motionCruiseVelocity(0.0), + motionAcceleration(0.0), motionCurveStrength(0), motionProfileTrajectoryPeriod(0), feedbackNotContinuous(false), @@ -488,7 +490,7 @@ namespace ctre { retstr += prependString + ".neutralDeadband = " + std::to_string(neutralDeadband) + ";\n"; retstr += prependString + ".voltageCompSaturation = " + std::to_string(voltageCompSaturation) + ";\n"; retstr += prependString + ".voltageMeasurementFilter = " + std::to_string(voltageMeasurementFilter) + ";\n"; - retstr += prependString + ".velocityMeasurementPeriod = " + VelocityMeasPeriodRoutines::toString(velocityMeasurementPeriod) + ";\n"; + retstr += prependString + ".velocityMeasurementPeriod = " + ctre::phoenix::sensors::SensorVelocityMeasPeriodRoutines::toString(velocityMeasurementPeriod) + ";\n"; retstr += prependString + ".velocityMeasurementWindow = " + std::to_string(velocityMeasurementWindow) + ";\n"; retstr += prependString + ".forwardSoftLimitThreshold = " + std::to_string(forwardSoftLimitThreshold) + ";\n"; retstr += prependString + ".reverseSoftLimitThreshold = " + std::to_string(reverseSoftLimitThreshold) + ";\n"; @@ -590,7 +592,11 @@ namespace ctre { bool _isVcompEn = false; + ctre::phoenix::motorcontrol::VictorSPXSimCollection* _simCollSpx; + protected: + ctre::phoenix::motorcontrol::VictorSPXSimCollection& GetVictorSPXSimCollection() { return *_simCollSpx; } + /** * Configures all base persistant settings. * @@ -642,10 +648,12 @@ namespace ctre { * Constructor for motor controllers. * * @param arbId Device ID [0,62] - * @param model String model of device. + * @param model String model of device. * Examples: "Talon SRX", "Talon FX", "Victor SPX". + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number */ - BaseMotorController(int deviceNumber, const char* model); + BaseMotorController(int deviceNumber, const char* model, std::string const &canbus = ""); virtual ~BaseMotorController(); BaseMotorController() = delete; BaseMotorController(BaseMotorController const&) = delete; @@ -682,23 +690,6 @@ namespace ctre { * _talonRght.set(ControlMode.PercentOutput, rghtJoy); */ virtual void Set(ControlMode mode, double value); - /** - * @deprecated use 4 parameter set - * @param mode Sets the appropriate output on the talon, depending on the mode. - * @param demand0 The output value to apply. - * such as advanced feed forward and/or auxiliary close-looping in firmware. - * In PercentOutput, the output is between -1.0 and 1.0, with 0.0 as stopped. - * In Current mode, output value is in amperes. - * In Velocity mode, output value is in position change / 100ms. - * In Position mode, output value is in encoder ticks or an analog value, - * depending on the sensor. See - * In Follower mode, the output value is the integer device ID of the talon to - * duplicate. - * - * @param demand1 Supplemental value. This will also be control mode specific for future features. - */ - [[deprecated("Use 4-paremeter Set() instead.")]] - virtual void Set(ControlMode mode, double demand0, double demand1); /** * @param mode Sets the appropriate output on the talon, depending on the mode. * @param demand0 The output value to apply. @@ -750,23 +741,6 @@ namespace ctre { * throttle is neutral (ie brake/coast) **/ virtual void SetNeutralMode(NeutralMode neutralMode); - /** - * Enables a future feature called "Heading Hold". - * For now this simply updates the CAN signal to the motor controller. - * Future firmware updates will use this. - * - * @param enable true/false enable - * @deprecated This has been replaced with the 4 param Set. - */ - void EnableHeadingHold(bool enable); - /** - * For now this simply updates the CAN signal to the motor controller. - * Future firmware updates will use this to control advanced auxiliary loop behavior. - * - * @param value - * @deprecated This has been replaced with the 4 param Set. - */ - void SelectDemandType(bool value); //------ Invert behavior ----------// /** * Sets the phase of the sensor. Use when controller forward/reverse output @@ -960,7 +934,7 @@ namespace ctre { virtual void EnableVoltageCompensation(bool enable); /** * Returns the enable state of Voltage Compensation that the caller has set. - * + * * @return TRUE if voltage compensation is enabled. */ virtual bool IsVoltageCompensationEnabled(); @@ -1080,6 +1054,23 @@ namespace ctre { * @return Error Code generated by function. 0 indicates no error. */ virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::sensors::CANCoder &canCoderRef, int remoteOrdinal, int timeoutMs = 0); + /** + * Select what remote device and signal to assign to Remote Sensor 0 or Remote Sensor 1. + * After binding a remote device and signal to Remote Sensor X, you may select Remote Sensor X + * as a PID source for closed-loop features. + * + * @param talonRef + * Talon device reference to use. + * @param remoteOrdinal + * 0 for configuring Remote Sensor 0, + * 1 for configuring Remote Sensor 1 + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + virtual ErrorCode ConfigRemoteFeedbackFilter(ctre::phoenix::motorcontrol::can::BaseTalon &talonRef, int remoteOrdinal, int timeoutMs = 0); /** * Select what sensor term should be bound to switch feedback device. * Sensor Sum = Sensor Sum Term 0 - Sensor Sum Term 1 @@ -1125,7 +1116,7 @@ namespace ctre { * * @return Position of selected sensor (in raw sensor units). */ - virtual int GetSelectedSensorPosition(int pidIdx = 0); + virtual double GetSelectedSensorPosition(int pidIdx = 0); /** * Get the selected sensor velocity. * @@ -1134,7 +1125,7 @@ namespace ctre { * @return selected sensor (in raw sensor units) per 100ms. * See Phoenix-Documentation for how to interpret. */ - virtual int GetSelectedSensorVelocity(int pidIdx = 0); + virtual double GetSelectedSensorVelocity(int pidIdx = 0); /** * Sets the sensor position to the given value. * @@ -1148,7 +1139,7 @@ namespace ctre { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode SetSelectedSensorPosition(int sensorPos, int pidIdx = 0, int timeoutMs = 50); + virtual ctre::phoenix::ErrorCode SetSelectedSensorPosition(double sensorPos, int pidIdx = 0, int timeoutMs = 50); //------ status frame period changes ----------// /** * Sets the period of the given control frame. @@ -1232,13 +1223,17 @@ namespace ctre { * * @param period * Desired period for the velocity measurement. @see - * #VelocityMeasPeriod + * #SensorVelocityMeasPeriod * @param timeoutMs * Timeout value in ms. If nonzero, function will wait for * config success and report an error if it times out. * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ + virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementPeriod(ctre::phoenix::sensors::SensorVelocityMeasPeriod period, + int timeoutMs = 0); + + [[deprecated("Use the overload with SensorVelocityMeasPeriod instead.")]] virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementPeriod(VelocityMeasPeriod period, int timeoutMs = 0); /** @@ -1370,7 +1365,7 @@ namespace ctre { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode ConfigForwardSoftLimitThreshold(int forwardSensorLimit, + virtual ctre::phoenix::ErrorCode ConfigForwardSoftLimitThreshold(double forwardSensorLimit, int timeoutMs = 0); /** * Configures the reverse soft limit threshold. @@ -1383,7 +1378,7 @@ namespace ctre { * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode ConfigReverseSoftLimitThreshold(int reverseSensorLimit, + virtual ctre::phoenix::ErrorCode ConfigReverseSoftLimitThreshold(double reverseSensorLimit, int timeoutMs = 0); /** * Configures the forward soft limit enable. @@ -1511,7 +1506,7 @@ namespace ctre { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode Config_IntegralZone(int slotIdx, int izone, + virtual ctre::phoenix::ErrorCode Config_IntegralZone(int slotIdx, double izone, int timeoutMs = 0); /** * Sets the allowable closed-loop error in the given parameter slot. @@ -1527,7 +1522,7 @@ namespace ctre { * @return Error Code generated by function. 0 indicates no error. */ virtual ctre::phoenix::ErrorCode ConfigAllowableClosedloopError(int slotIdx, - int allowableCloseLoopError, int timeoutMs = 0); + double allowableCloseLoopError, int timeoutMs = 0); /** * Sets the maximum integral accumulator in the given parameter slot. * @@ -1636,7 +1631,7 @@ namespace ctre { * 0 for Primary closed-loop. 1 for auxiliary closed-loop. * @return Closed-loop error value. */ - virtual int GetClosedLoopError(int pidIdx = 0); + virtual double GetClosedLoopError(int pidIdx = 0); /** * Gets the iaccum value. * @@ -1677,14 +1672,14 @@ namespace ctre { * MotionMagic/MotionProfile control modes. * * @return The Active Trajectory Position in sensor units. - */ virtual int GetActiveTrajectoryPosition(int pidIdx = 0); + */ virtual double GetActiveTrajectoryPosition(int pidIdx = 0); /** * Gets the active trajectory target velocity using * MotionMagic/MotionProfile control modes. * * @return The Active Trajectory Velocity in sensor units per 100ms. */ - virtual int GetActiveTrajectoryVelocity(int pidIdx = 0); /** + virtual double GetActiveTrajectoryVelocity(int pidIdx = 0); /** * Gets the active trajectory arbitrary feedforward using * MotionMagic/MotionProfile control modes. * @@ -1692,14 +1687,8 @@ namespace ctre { * 0 for Primary closed-loop. 1 for auxiliary closed-loop. * @return The Active Trajectory ArbFeedFwd in units of percent output * (where 0.01 is 1%). - */ virtual double GetActiveTrajectoryArbFeedFwd(int pidIdx = 0); /** - * Gets the active trajectory target heading using - * MotionMagicArc/MotionProfileArc control modes. - * - * @return The Active Trajectory Heading in degrees. */ - [[deprecated("Replaced by GetActiveTrajectoryPosition(1)")]] - virtual double GetActiveTrajectoryHeading(); + virtual double GetActiveTrajectoryArbFeedFwd(int pidIdx = 0); //------ Motion Profile Settings used in Motion Magic ----------// /** @@ -1714,7 +1703,7 @@ namespace ctre { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode ConfigMotionCruiseVelocity(int sensorUnitsPer100ms, + virtual ctre::phoenix::ErrorCode ConfigMotionCruiseVelocity(double sensorUnitsPer100ms, int timeoutMs = 0); /** * Sets the Motion Magic Acceleration. This is the target acceleration that @@ -1729,7 +1718,7 @@ namespace ctre { * blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ - virtual ctre::phoenix::ErrorCode ConfigMotionAcceleration(int sensorUnitsPer100msPerSec, + virtual ctre::phoenix::ErrorCode ConfigMotionAcceleration(double sensorUnitsPer100msPerSec, int timeoutMs = 0); /** * Sets the Motion Magic S Curve Strength. diff --git a/include/ctre/phoenix/motorcontrol/can/BaseTalon.h b/include/ctre/phoenix/motorcontrol/can/BaseTalon.h index d6f4d1f..7e590e8 100644 --- a/include/ctre/phoenix/motorcontrol/can/BaseTalon.h +++ b/include/ctre/phoenix/motorcontrol/can/BaseTalon.h @@ -10,6 +10,8 @@ #include "ctre/phoenix/CustomParamConfiguration.h" #include "ctre/phoenix/motorcontrol/SensorCollection.h" #include "ctre/phoenix/motorcontrol/TalonFXSensorCollection.h" +#include "ctre/phoenix/motorcontrol/TalonSRXSimCollection.h" +#include "ctre/phoenix/motorcontrol/TalonFXSimCollection.h" /* forward proto's */ namespace ctre { @@ -33,9 +35,9 @@ namespace ctre { * Feedback device for a particular PID loop. * Note the FeedbackDevice enum holds all possible sensor types. Consult product documentation to confirm what is available. * Alternatively the product specific enum can be used instead. - * @code - * configs.primaryPID.selectedFeedbackSensor = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; - * configs.primaryPID.selectedFeedbackSensor = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; + * @code + * configs.primaryPID.selectedFeedbackSensor = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; + * configs.primaryPID.selectedFeedbackSensor = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; * @endcode */ FeedbackDevice selectedFeedbackSensor; @@ -135,9 +137,9 @@ namespace ctre { * Feedback Device for Sum 0 Term * Note the FeedbackDevice enum holds all possible sensor types. Consult product documentation to confirm what is available. * Alternatively the product specific enum can be used instead. - * @code - * configs.sum0Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; - * configs.sum0Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; + * @code + * configs.sum0Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; + * configs.sum0Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; * @endcode */ FeedbackDevice sum0Term; @@ -145,9 +147,9 @@ namespace ctre { * Feedback Device for Sum 1 Term * Note the FeedbackDevice enum holds all possible sensor types. Consult product documentation to confirm what is available. * Alternatively the product specific enum can be used instead. - * @code - * configs.sum1Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; - * configs.sum1Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; + * @code + * configs.sum1Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; + * configs.sum1Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; * @endcode */ FeedbackDevice sum1Term; @@ -155,9 +157,9 @@ namespace ctre { * Feedback Device for Diff 0 Term * Note the FeedbackDevice enum holds all possible sensor types. Consult product documentation to confirm what is available. * Alternatively the product specific enum can be used instead. - * @code - * configs.diff0Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; - * configs.diff0Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; + * @code + * configs.diff0Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; + * configs.diff0Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; * @endcode */ FeedbackDevice diff0Term; @@ -165,9 +167,9 @@ namespace ctre { * Feedback Device for Diff 1 Term * Note the FeedbackDevice enum holds all possible sensor types. Consult product documentation to confirm what is available. * Alternatively the product specific enum can be used instead. - * @code - * configs.diff1Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; - * configs.diff1Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; + * @code + * configs.diff1Term = (FeedbackDevice)TalonSRXFeedbackDevice::QuadEncoder; + * configs.diff1Term = (FeedbackDevice)TalonFXFeedbackDevice::IntegratedSensor; * @endcode */ FeedbackDevice diff1Term; @@ -266,10 +268,16 @@ namespace ctre { ctre::phoenix::motorcontrol::SensorCollection* _sensorCollSrx; ctre::phoenix::motorcontrol::TalonFXSensorCollection* _sensorCollFx; + ctre::phoenix::motorcontrol::TalonSRXSimCollection* _simCollSrx; + ctre::phoenix::motorcontrol::TalonFXSimCollection* _simCollFx; + protected: ctre::phoenix::motorcontrol::SensorCollection& GetTalonSRXSensorCollection() { return *_sensorCollSrx; } ctre::phoenix::motorcontrol::TalonFXSensorCollection& GetTalonFXSensorCollection() { return *_sensorCollFx; } + ctre::phoenix::motorcontrol::TalonSRXSimCollection& GetTalonSRXSimCollection() { return *_simCollSrx; } + ctre::phoenix::motorcontrol::TalonFXSimCollection& GetTalonFXSimCollection() { return *_simCollFx; } + ctre::phoenix::ErrorCode ConfigurePID(const BaseTalonPIDSetConfiguration& pid, int pidIdx, int timeoutMs, bool enableOptimizations); @@ -311,8 +319,10 @@ namespace ctre { /** * Constructor for a Talon * @param deviceNumber CAN Device ID of BaseTalon + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number */ - BaseTalon(int deviceNumber, const char* model); + BaseTalon(int deviceNumber, const char* model, std::string const &canbus = ""); virtual ~BaseTalon(); BaseTalon() = delete; BaseTalon(BaseTalon const&) = delete; @@ -450,13 +460,17 @@ namespace ctre { * * @param period * Desired period for the velocity measurement. @see - * #VelocityMeasPeriod + * #SensorVelocityMeasPeriod * @param timeoutMs * Timeout value in ms. If nonzero, function will wait for * config success and report an error if it times out. * If zero, no blocking or checking is performed. * @return Error Code generated by function. 0 indicates no error. */ + virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementPeriod(ctre::phoenix::sensors::SensorVelocityMeasPeriod period, + int timeoutMs = 0); + + [[deprecated("Use the overload with SensorVelocityMeasPeriod instead.")]] virtual ctre::phoenix::ErrorCode ConfigVelocityMeasurementPeriod(VelocityMeasPeriod period, int timeoutMs = 0); /** @@ -581,7 +595,7 @@ namespace ctre { LimitSwitchNormal normalOpenOrClose, int deviceID, int timeoutMs = 0); //------ Current Limit ----------// - virtual ctre::phoenix::ErrorCode ConfigSupplyCurrentLimit(const SupplyCurrentLimitConfiguration& currLimitConfigs, int timeoutMs = 0) = 0; + virtual ctre::phoenix::ErrorCode ConfigSupplyCurrentLimit(const SupplyCurrentLimitConfiguration& currLimitConfigs, int timeoutMs = 50); //------ RAW Sensor API ----------// /** diff --git a/include/ctre/phoenix/motorcontrol/can/TalonFX.h b/include/ctre/phoenix/motorcontrol/can/TalonFX.h index 02d1708..975e751 100644 --- a/include/ctre/phoenix/motorcontrol/can/TalonFX.h +++ b/include/ctre/phoenix/motorcontrol/can/TalonFX.h @@ -121,6 +121,33 @@ namespace ctre { /** * CTRE Talon FX Motor Controller when used on CAN Bus. + * + *
+				 * {@code
+				 * // Example usage of a TalonFX motor controller
+				 * TalonFX motor{0}; // creates a new TalonFX with ID 0
+				 *
+				 * TalonFXConfiguration config;
+				 * config.supplyCurrLimit.enable = true;
+				 * config.supplyCurrLimit.triggerThresholdCurrent = 40; // the peak supply current, in amps
+				 * config.supplyCurrLimit.triggerThresholdTime = 1.5; // the time at the peak supply current before the limit triggers, in sec
+				 * config.supplyCurrLimit.currentLimit = 30; // the current to maintain if the peak supply limit is triggered
+				 * motor.ConfigAllSettings(config); // apply the config settings; this selects the quadrature encoder
+				 *
+				 * motor.Set(TalonFXControlMode::PercentOutput, 0.5); // runs the motor at 50% power
+				 *
+				 * std::cout << motor.GetSelectedSensorPosition() << std::endl; // prints the position of the selected sensor
+				 * std::cout << motor.GetSelectedSensorVelocity() << std::endl; // prints the velocity recorded by the selected sensor
+				 * std::cout << motor.GetMotorOutputPercent() << std::endl; // prints the percent output of the motor (0.5)
+				 * std::cout << motor.GetStatorCurrent() << std::endl; // prints the output current of the motor
+				 *
+				 * ErrorCode error = motor.GetLastError(); // gets the last error generated by the motor controller
+				 * Faults faults;
+				 * ErrorCode faultsError = motor.GetFaults(faults); // fills faults with the current motor controller faults; returns the last error generated
+				 *
+				 * motor.SetStatusFramePeriod(StatusFrameEnhanced::Status_2_Feedback0, 10); // changes the period of the Status 2 frame (GetSelectedSensor*()) to 10ms
+				 * }
+				 * 
*/ class TalonFX : public virtual BaseTalon { @@ -130,8 +157,10 @@ namespace ctre { /** * Constructor for a Talon * @param deviceNumber CAN Device ID of TalonFX + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number */ - TalonFX(int deviceNumber); + TalonFX(int deviceNumber, std::string const &canbus = ""); ~TalonFX(); TalonFX() = delete; TalonFX(TalonFX const&) = delete; @@ -271,6 +300,13 @@ namespace ctre { * @return object that can get/set individual RAW sensor values. */ ctre::phoenix::motorcontrol::TalonFXSensorCollection& GetSensorCollection(); + + //------ Simulation API ----------// + /** + * @return object that can set simulation inputs. + */ + ctre::phoenix::motorcontrol::TalonFXSimCollection& GetSimCollection(); + //------ All Configs ----------// /** diff --git a/include/ctre/phoenix/motorcontrol/can/TalonSRX.h b/include/ctre/phoenix/motorcontrol/can/TalonSRX.h index 4aa11a4..5e78953 100644 --- a/include/ctre/phoenix/motorcontrol/can/TalonSRX.h +++ b/include/ctre/phoenix/motorcontrol/can/TalonSRX.h @@ -13,6 +13,7 @@ namespace ctre { namespace phoenix { namespace motorcontrol { class SensorCollection; + class TalonSRXSimCollection; } } } @@ -112,6 +113,32 @@ namespace ctre { /** * CTRE Talon SRX Motor Controller when used on CAN Bus. + * + *
+				 * {@code
+				 * // Example usage of a TalonSRX motor controller
+				 * TalonSRX motor{0}; // creates a new TalonSRX with ID 0
+				 *
+				 * TalonSRXConfiguration config;
+				 * config.peakCurrentLimit = 40; // the peak current, in amps
+				 * config.peakCurrentDuration = 1500; // the time at the peak current before the limit triggers, in ms
+				 * config.continuousCurrentLimit = 30; // the current to maintain if the peak limit is triggered
+				 * motor.ConfigAllSettings(config); // apply the config settings; this selects the quadrature encoder
+				 *
+				 * motor.Set(TalonSRXControlMode::PercentOutput, 0.5); // runs the motor at 50% power
+				 *
+				 * std::cout << motor.GetSelectedSensorPosition() << std::endl; // prints the position of the selected sensor
+				 * std::cout << motor.GetSelectedSensorVelocity() << std::endl; // prints the velocity recorded by the selected sensor
+				 * std::cout << motor.GetMotorOutputPercent() << std::endl; // prints the percent output of the motor (0.5)
+				 * std::cout << motor.GetStatorCurrent() << std::endl; // prints the output current of the motor
+				 *
+				 * ErrorCode error = motor.GetLastError(); // gets the last error generated by the motor controller
+				 * Faults faults;
+				 * ErrorCode faultsError = motor.GetFaults(faults); // fills faults with the current motor controller faults; returns the last error generated
+				 *
+				 * motor.SetStatusFramePeriod(StatusFrameEnhanced::Status_2_Feedback0, 10); // changes the period of the Status 2 frame (GetSelectedSensor*()) to 10ms
+				 * }
+				 * 
*/ class TalonSRX : public virtual BaseTalon { @@ -123,6 +150,16 @@ namespace ctre { * @param deviceNumber CAN Device ID of TalonSRX */ TalonSRX(int deviceNumber); + +#ifndef __FRC_ROBORIO__ + /** + * Constructor so non-FRC platforms can specify a CAN 2.0 socketcan bus + * @param deviceNumber CAN Device ID of TalonSRX + * @param canbus String specifying the bus + */ + TalonSRX(int deviceNumber, std::string const &canbus); +#endif + ~TalonSRX(); TalonSRX() = delete; TalonSRX(TalonSRX const&) = delete; @@ -334,6 +371,12 @@ namespace ctre { */ ctre::phoenix::motorcontrol::SensorCollection& GetSensorCollection(); + //------ Simulation API ----------// + /** + * @return object that can set simulation inputs. + */ + ctre::phoenix::motorcontrol::TalonSRXSimCollection& GetSimCollection(); + //------ All Configs ----------// /** diff --git a/include/ctre/phoenix/motorcontrol/can/VictorSPX.h b/include/ctre/phoenix/motorcontrol/can/VictorSPX.h index 24f5fdf..0d0ee1f 100644 --- a/include/ctre/phoenix/motorcontrol/can/VictorSPX.h +++ b/include/ctre/phoenix/motorcontrol/can/VictorSPX.h @@ -205,6 +205,22 @@ class VictorConfigUtil { /** * VEX Victor SPX Motor Controller when used on CAN Bus. + * + *
+ * {@code
+ * // Example usage of a VictorSPX motor controller
+ * VictorSPX motor{0}; // creates a new VictorSPX with ID 0
+ *
+ * motor.Set(VictorSPXControlMode::PercentOutput, 0.5); // runs the motor at 50% power
+ *
+ * std::cout << motor.GetMotorOutputPercent() << std::endl; // prints the percent output of the motor (0.5)
+ * std::cout << motor.GetBusVoltage() << std::endl; // prints the bus voltage seen by the motor controller
+ *
+ * ErrorCode error = motor.GetLastError(); // gets the last error generated by the motor controller
+ * Faults faults;
+ * ErrorCode faultsError = motor.GetFaults(faults); // fills faults with the current motor controller faults; returns the last error generated
+ * }
+ * 
*/ class VictorSPX: public virtual ctre::phoenix::motorcontrol::can::BaseMotorController, public virtual ctre::phoenix::motorcontrol::IMotorController { @@ -230,6 +246,16 @@ class VictorSPX: public virtual ctre::phoenix::motorcontrol::can::BaseMotorContr * [0,62] */ VictorSPX(int deviceNumber); + +#ifndef __FRC_ROBORIO__ + /** + * Constructor so non-FRC platforms can specify a CAN 2.0 socketcan bus + * @param deviceNumber CAN Device ID of VictorSPX + * @param canbus String specifying the bus + */ + VictorSPX(int deviceNumber, std::string const &canbus); +#endif + virtual ~VictorSPX() { } VictorSPX(VictorSPX const&) = delete; @@ -293,6 +319,12 @@ class VictorSPX: public virtual ctre::phoenix::motorcontrol::can::BaseMotorContr */ void Set(ctre::phoenix::motorcontrol::VictorSPXControlMode mode, double demand0, ctre::phoenix::motorcontrol::DemandType demand1Type, double demand1); + //------ Simulation API ----------// + /** + * @return object that can set simulation inputs. + */ + ctre::phoenix::motorcontrol::VictorSPXSimCollection& GetSimCollection(); + //------ All Configs ----------// /** * Gets all PID set persistant settings. diff --git a/include/ctre/phoenix/motorcontrol/can/WPI_TalonSRX.h b/include/ctre/phoenix/motorcontrol/can/WPI_TalonSRX.h deleted file mode 100644 index c238473..0000000 --- a/include/ctre/phoenix/motorcontrol/can/WPI_TalonSRX.h +++ /dev/null @@ -1,128 +0,0 @@ -/** - * WPI Compliant motor controller class. - * WPILIB's object model requires many interfaces to be implemented to use - * the various features. - * This includes... - * - Software PID loops running in the robot controller - * - LiveWindow/Test mode features - * - Motor Safety (auto-turn off of motor if Set stops getting called) - * - Single Parameter set that assumes a simple motor controller. - */ -#pragma once -#if defined(CTR_INCLUDE_WPILIB_CLASSES) || defined(__FRC_ROBORIO__) -#include "ctre/phoenix/MotorControl/CAN/TalonSRX.h" -#include "SmartDashboard/SendableBase.h" -#include "SmartDashboard/SendableBuilder.h" -#include "SpeedController.h" -#include "MotorSafety.h" -#include "MotorSafetyHelper.h" - -namespace ctre { -namespace phoenix { -namespace motorcontrol { -namespace can { - - -class WPI_TalonSRX: public virtual TalonSRX, - public virtual frc::SpeedController, - public frc::SendableBase, - public frc::MotorSafety { -public: - WPI_TalonSRX(int deviceNumber); - virtual ~WPI_TalonSRX(); - - WPI_TalonSRX() = delete; - WPI_TalonSRX(WPI_TalonSRX const&) = delete; - WPI_TalonSRX& operator=(WPI_TalonSRX const&) = delete; - - //----------------------- set/get routines for WPILIB interfaces -------------------// - /** - * Common interface for setting the speed of a simple speed controller. - * - * @param speed The speed to set. Value should be between -1.0 and 1.0. - * Value is also saved for Get(). - */ - virtual void Set(double speed); - virtual void PIDWrite(double output); - - /** - * Common interface for getting the current set speed of a speed controller. - * - * @return The current set speed. Value is between -1.0 and 1.0. - */ - virtual double Get() const; - - //----------------------- Intercept CTRE calls for motor safety -------------------// - virtual void Set(ControlMode mode, double value); - virtual void Set(ControlMode mode, double demand0, double demand1); - //----------------------- Invert routines -------------------// - /** - * Common interface for inverting direction of a speed controller. - * - * @param isInverted The state of inversion, true is inverted. - */ - virtual void SetInverted(bool isInverted); - /** - * Common interface for returning the inversion state of a speed controller. - * - * @return isInverted The state of inversion, true is inverted. - */ - virtual bool GetInverted() const; - //----------------------- turn-motor-off routines-------------------// - /** - * Common interface for disabling a motor. - */ - virtual void Disable(); - /** - * Common interface to stop the motor until Set is called again. - */ - virtual void StopMotor(); - - //----------------------- Motor Safety-------------------// - - /** - * Set the safety expiration time. - * - * @param timeout The timeout (in seconds) for this motor object - */ - void SetExpiration(double timeout); - - /** - * Return the safety expiration time. - * - * @return The expiration time value. - */ - double GetExpiration() const; - - /** - * Check if the motor is currently alive or stopped due to a timeout. - * - * @return a bool value that is true if the motor has NOT timed out and should - * still be running. - */ - bool IsAlive() const; - - /** - * Check if motor safety is enabled. - * - * @return True if motor safety is enforced for this object - */ - bool IsSafetyEnabled() const; - - void SetSafetyEnabled(bool enabled); - - void GetDescription(llvm::raw_ostream& desc) const; - -protected: - virtual void InitSendable(frc::SendableBuilder& builder); -private: - double _speed = 0; - std::string _desc; - frc::MotorSafetyHelper _safetyHelper; -}; - -} // namespace can -} // namespace motorcontrol -} // namespace phoenix -} // namespace ctre -#endif diff --git a/include/ctre/phoenix/motorcontrol/can/WPI_VictorSPX.h b/include/ctre/phoenix/motorcontrol/can/WPI_VictorSPX.h deleted file mode 100644 index fdae654..0000000 --- a/include/ctre/phoenix/motorcontrol/can/WPI_VictorSPX.h +++ /dev/null @@ -1,128 +0,0 @@ -/** - * WPI Compliant motor controller class. - * WPILIB's object model requires many interfaces to be implemented to use - * the various features. - * This includes... - * - Software PID loops running in the robot controller - * - LiveWindow/Test mode features - * - Motor Safety (auto-turn off of motor if Set stops getting called) - * - Single Parameter set that assumes a simple motor controller. - */ -#pragma once -#if defined(CTR_INCLUDE_WPILIB_CLASSES) || defined(__FRC_ROBORIO__) -#include "ctre/phoenix/MotorControl/CAN/VictorSPX.h" -#include "SmartDashboard/SendableBase.h" -#include "SmartDashboard/SendableBuilder.h" -#include "SpeedController.h" -#include "MotorSafety.h" -#include "MotorSafetyHelper.h" - -namespace ctre { -namespace phoenix { -namespace motorcontrol { -namespace can { - - -class WPI_VictorSPX: public virtual VictorSPX, - public virtual frc::SpeedController, - public frc::SendableBase, - public frc::MotorSafety { -public: - WPI_VictorSPX(int deviceNumber); - virtual ~WPI_VictorSPX(); - - WPI_VictorSPX() = delete; - WPI_VictorSPX(WPI_VictorSPX const&) = delete; - WPI_VictorSPX& operator=(WPI_VictorSPX const&) = delete; - - //----------------------- set/get routines for WPILIB interfaces -------------------// - /** - * Common interface for setting the speed of a simple speed controller. - * - * @param speed The speed to set. Value should be between -1.0 and 1.0. - * Value is also saved for Get(). - */ - virtual void Set(double speed); - virtual void PIDWrite(double output); - - /** - * Common interface for getting the current set speed of a speed controller. - * - * @return The current set speed. Value is between -1.0 and 1.0. - */ - virtual double Get() const; - - //----------------------- Intercept CTRE calls for motor safety -------------------// - virtual void Set(ControlMode mode, double value); - virtual void Set(ControlMode mode, double demand0, double demand1); - //----------------------- Invert routines -------------------// - /** - * Common interface for inverting direction of a speed controller. - * - * @param isInverted The state of inversion, true is inverted. - */ - virtual void SetInverted(bool isInverted); - /** - * Common interface for returning the inversion state of a speed controller. - * - * @return isInverted The state of inversion, true is inverted. - */ - virtual bool GetInverted() const; - //----------------------- turn-motor-off routines-------------------// - /** - * Common interface for disabling a motor. - */ - virtual void Disable(); - /** - * Common interface to stop the motor until Set is called again. - */ - virtual void StopMotor(); - - //----------------------- Motor Safety-------------------// - - /** - * Set the safety expiration time. - * - * @param timeout The timeout (in seconds) for this motor object - */ - void SetExpiration(double timeout); - - /** - * Return the safety expiration time. - * - * @return The expiration time value. - */ - double GetExpiration() const; - - /** - * Check if the motor is currently alive or stopped due to a timeout. - * - * @return a bool value that is true if the motor has NOT timed out and should - * still be running. - */ - bool IsAlive() const; - - /** - * Check if motor safety is enabled. - * - * @return True if motor safety is enforced for this object - */ - bool IsSafetyEnabled() const; - - void SetSafetyEnabled(bool enabled); - - void GetDescription(llvm::raw_ostream& desc) const; - -protected: - virtual void InitSendable(frc::SendableBuilder& builder); -private: - double _speed = 0; - std::string _desc; - frc::MotorSafetyHelper _safetyHelper; -}; - -} // namespace can -} // namespace motorcontrol -} // namespace phoenix -} // namespace ctre -#endif diff --git a/include/ctre/phoenix/music/Orchestra.h b/include/ctre/phoenix/music/Orchestra.h index cc99355..5156531 100644 --- a/include/ctre/phoenix/music/Orchestra.h +++ b/include/ctre/phoenix/music/Orchestra.h @@ -58,7 +58,7 @@ namespace ctre { * The path to the Chirp File. * @return Error Code generated by function. 0 indicates no error. */ - ErrorCode LoadMusic(std::string& filePath); + ErrorCode LoadMusic(const std::string& filePath); /** * Plays the music file that's loaded. * If the player is paused, this will resume. @@ -84,6 +84,12 @@ namespace ctre { * @return True if playing, false otherwise */ bool IsPlaying(); + /** + * @return The current timestamp of the music file (playing or paused) in milliseconds. + * The timestamp will reset to zero whenever LoadMusic() or Stop() is called. + * If IsPlaying() returns false, this routine can be used to determine if music is stopped or paused. + */ + uint32_t GetCurrentTime(); /** * Adds another instrument to the orchestra. * @param instrument @@ -99,4 +105,4 @@ namespace ctre { }; } } -} \ No newline at end of file +} diff --git a/include/ctre/phoenix/paramEnum.h b/include/ctre/phoenix/paramEnum.h index d5d000d..eae7151 100644 --- a/include/ctre/phoenix/paramEnum.h +++ b/include/ctre/phoenix/paramEnum.h @@ -40,19 +40,6 @@ namespace ctre { eClearPositionOnLimitR = 321, eClearPositionOnQuadIdx = 322, - /* - *@deprecated use above - */ - eClearPosOnLimitF = eClearPositionOnLimitF, - /* - *@deprecated use above - */ - eClearPosOnLimitR = eClearPositionOnLimitR, - /* - *@deprecated use above - */ - eClearPositionOnIdx = eClearPositionOnQuadIdx, - eSampleVelocityPeriod = 325, eSampleVelocityWindow = 326, @@ -148,6 +135,49 @@ namespace ctre { eMagnetOffset, eSensorSync, eAbsSensorRange, + + /* Pigeon2 */ + eChangeCompassUse = 800, + eRestartKalman, + eAccNoiseAmplificationGain, + eMagNoiseAmplificationGain, + eGyrNoiseAmplificationGain, + eMaxAccKg, + eMaxMagKg, + eGyroBias, + eAccelOffsets, + eMagCal, + eMagCalSlot, + eMagCalRunning, + eGyrResolution, + eAccelKalmanBiasGain, + eMagKalmanBiasGain, + eTempCalRunning, + eApplyTempCal, + eClearTempCal, + eDontRunThermComp, + eChangeHeatOutput, + eSetNoMotionCalDisable, + eClearMagCal, + eSetGyrSensitivity, + eSetVsenseScalar, + eConfigMountPoseYaw, + eConfigMountPosePitch, + eConfigMountPoseRoll, + eConfigAccelScalar, + eConfigGyroScalarX, + eConfigGyroScalarY, + eConfigGyroScalarZ, + eCustomParam0, + eCustomParam1, + + /* CANdle */ + eLEDStripType = 900, + eLossOfSignalBehavior, + eBrightnessCoefficient, + eStatusLedState, + eVBatOutput, + eV5Enabled, }; } // namespace phoenix diff --git a/include/ctre/phoenix/platform/BasePlatform.h b/include/ctre/phoenix/platform/BasePlatform.h new file mode 100644 index 0000000..4104d5c --- /dev/null +++ b/include/ctre/phoenix/platform/BasePlatform.h @@ -0,0 +1,92 @@ +#pragma once + +#include "Platform-pack.h" +#include "canframe.h" +#include +#include + +/* forward prototype, defined in platform implementation */ +class CANivoreSocket; + +namespace ctre { +namespace phoenix { +namespace platform { +namespace can { + + /* interface for CAN Platforms */ + class BaseCANbusDispatcher { + public: + /* the CANbusDispatcher implementation will define this */ + static BaseCANbusDispatcher &GetInstance(void); + + virtual void Dispose(void); + + //-------------- CANivore diagnostic interface, this is required only for the CANivore dispatchers ---------------// + virtual int32_t CANivoreDiagTransaction(uint8_t *data, uint32_t txDataLen, uint32_t rxDataCapacity, uint32_t &rxDataLen, uint32_t timeoutMs, char const *canbus, bool printErr); + + //------------ CANBus registration interface, this is required when multiple CAN buses are possible -------------// + virtual int32_t RegisterCANbus(char const *canbus); + virtual std::string GetCANivoreDevName(char const *canbus); + + //-------------------------- Low Level CANBus interface, this is required for everyone --------------------------// + virtual std::vector GetCANbusList(void) = 0; + virtual void GetStatus(float &busUtilPerc, uint32_t &busOffCount, uint32_t &txFullCount, uint32_t &rec, uint32_t &tec, int32_t &status, char const *canbus, bool printErr) = 0; + virtual int32_t SendFrame(uint32_t messageID, uint8_t const *data, uint8_t dataSize, char const *canbus, bool printErr) = 0; + + //----------- Mid Level CANBus interface, this is required for everyone (BusMgr for phoenix-canutil) ------------// + virtual void CANComm_SendMessage(uint32_t messageID, uint8_t const *data, uint8_t dataSize, int32_t periodMs, int32_t *status, char const *canbus, bool printErr) = 0; + virtual void CANComm_ReceiveMessage(uint32_t *messageID, uint32_t messageIDMask, uint8_t *data, uint8_t *dataSize, uint32_t *timeStamp, int32_t *status, char const *canbus, bool printErr) = 0; + virtual void CANComm_OpenStreamSession(uint32_t *sessionHandle, uint32_t messageID, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status, char const *canbus, bool printErr) = 0; + virtual void CANComm_CloseStreamSession(uint32_t sessionHandle, char const *canbus, bool printErr) = 0; + virtual void CANComm_ReadStreamSession(uint32_t sessionHandle, canframe_t *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status, char const *canbus, bool printErr) = 0; + virtual int32_t CANComm_GetTxSchedulerStatus(void *unusedControlWorld, char const *canbus, bool printErr) = 0; // used to be GetControlWord + }; + + /* interface for CAN Platforms using BusMgr */ + class BaseCANDriver { + public: + /* the CANDriver implementation will define this */ + static BaseCANDriver &GetInstance(void); + + virtual void GetStatus(float &busUtilPerc, uint32_t &busOffCount, uint32_t &txFullCount, uint32_t &rec, uint32_t &tec, int32_t &status, CANivoreSocket const *socket) = 0; + /* When possible, implementations should NOT make this blocking */ + virtual int32_t SendFrame(uint32_t messageID, uint8_t const *data, uint8_t dataSize, CANivoreSocket const *socket) = 0; + virtual uint16_t GetMinRxBufferSz(void) = 0; + /* Windows: This routine will block up to a fixed timeout (10ms). This is necessary for good performance. + * Linux: This routine is non-blocking to prevent mutex-blocks. Caller should have a yield to prevent high-cpu spinning. */ + virtual int32_t ReceiveFrame(canframe_t *toFill, uint32_t frameCap, uint32_t &numFilled, CANivoreSocket const *socket) = 0; + }; + +} //namespace can +} //namespace platform +} //namespace phoenix +} //namespace ctre + +namespace ctre { +namespace phoenix { +namespace platform { + + /** list of all supporte device types */ + #define kDeviceTypeListInitializer TalonSRXType, VictorSPXType, PigeonIMUType, RibbonPigeonIMUType, TalonFXType, CANCoderType + + enum DeviceType {kDeviceTypeListInitializer}; + + /* interface for Platforms */ + class BaseSimPlatform { + public: + /* the Platform implementation will define this */ + static BaseSimPlatform &GetInstance(void); + + virtual int32_t SimCreate(DeviceType type, int id); + + virtual int32_t SimDestroy(DeviceType type, int id); + virtual int32_t SimDestroyAll(); + + virtual int32_t SimSetPhysicsInput(DeviceType type, int id, std::string const &physicsType, double value); + virtual int32_t SimGetPhysicsValue(DeviceType type, int id, std::string const &physicsType, double &value); + virtual int32_t SimGetLastError(DeviceType type, int id); + }; + +} // namespace platform +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/platform/Platform-pack.h b/include/ctre/phoenix/platform/Platform-pack.h index afa2c67..46b68d0 100644 --- a/include/ctre/phoenix/platform/Platform-pack.h +++ b/include/ctre/phoenix/platform/Platform-pack.h @@ -65,22 +65,6 @@ #define CTRE_REGISTER_SHUTDOWN_HANDLER(shutdown_handler) \ do{ (void)SetConsoleCtrlHandler(CTRE_Global_ConsoleHandlerRoutine, TRUE); } while(0) -#elif defined(__GNUC__) - - #include - - #define CTRE_IMPLEMENT_SHUTDOWN_HANDLER(shutdown_handler) \ - static void shutdown_handler(int signo) - - #define CTRE_REGISTER_SHUTDOWN_HANDLER(shutdown_handler) \ - { \ - struct sigaction sigact; \ - sigact.sa_handler = shutdown_handler; \ - sigemptyset(&sigact.sa_mask); \ - sigact.sa_flags = 0; \ - sigaction(SIGINT, &sigact, NULL); \ - sigaction(SIGTERM, &sigact, NULL); \ - } #else #define CTRE_IMPLEMENT_SHUTDOWN_HANDLER(shutdown_handler) static void shutdown_handler(int signo) diff --git a/include/ctre/phoenix/platform/Platform.h b/include/ctre/phoenix/platform/Platform.h index 5b679c5..af16213 100644 --- a/include/ctre/phoenix/platform/Platform.h +++ b/include/ctre/phoenix/platform/Platform.h @@ -1,53 +1,35 @@ #pragma once -#include "ctre/phoenix/platform/Platform-pack.h" -#include -#include -/* small wrinkle for RIO platform */ -#ifdef __FRC_ROBORIO__ - struct tCANStreamMessage; -#endif +#include "BasePlatform.h" +#include "SleepUs.h" +#include "ReportError.h" +#include "ctre/phoenix/export.h" +#include "ctre/phoenix/ErrorCode.h" namespace ctre { namespace phoenix { namespace platform { namespace can { - /** - * "plain old data" container for holding a CAN Frame Event. - * Assignment of this type resolves to a copy-by-value. - */ - typedef struct _canframe_t { - uint32_t arbID; //!< ArbID of the CAN frame. - uint32_t timeStampUs; //!< Timestamp if receive event. Zero otherwise. - uint8_t data[8]; //!< Data bytes - uint32_t flags; //!< Zero for now. Can be used for detecting arbID type (29bit vs 11bit). - uint8_t dlc; //!< Number of bytes in payload - } canframe_t; - //-------------- Low Level CANBus interface, this is required if using phoenix-canutil--------------------------// - void CANbus_GetStatus(float *busUtilPerc, uint32_t *busOffCount, uint32_t *txFullCount, uint32_t *rec, uint32_t *tec, int32_t *status); - int32_t CANbus_SendFrame(uint32_t messageID, const uint8_t *data, uint8_t dataSize); - /* assumed blocking */ - int32_t CANbus_ReceiveFrame(canframe_t * toFill, uint32_t frameCap, uint32_t *numFilled); - - /** - * Set the CAN interface to use, for example on Linux you may select "can0". - * @param CANInterface CAN interface string. - * @return errorcode, zero if successful. - */ - int32_t SetCANInterface(const char * CANInterface); + //-------------- CANivore diagnostic interface, this is only implemented by the CANivore dispatchers ---------------// + CTREXPORT int32_t CANivoreDiagTransaction(uint8_t *data, uint32_t txDataLen, uint32_t rxDataCapacity, uint32_t &rxDataLen, uint32_t timeoutMs, char const *canbus, bool printErr = true); + + //------------ CANBus registration interface, this is implemented when multiple CAN buses are possible -------------// + CTREXPORT int32_t RegisterCANbus(char const *canbus); + CTREXPORT std::string GetCANivoreDevName(char const *canbus); + + //-------------------------- Low Level CANBus interface, this is implemented by everyone ---------------------------// + CTREXPORT std::vector GetCANbusList(void); + CTREXPORT void CANbus_GetStatus(float &busUtilPerc, uint32_t &busOffCount, uint32_t &txFullCount, uint32_t &rec, uint32_t &tec, int32_t &status, char const *canbus, bool printErr = true); + CTREXPORT int32_t CANbus_SendFrame(uint32_t messageID, uint8_t const *data, uint8_t dataSize, char const *canbus, bool printErr = true); - //-------------- Mid Level CANBus interface, this is required if NOT using phoenix-canutil, --------------------------// - void CANComm_SendMessage(uint32_t messageID, const uint8_t *data, uint8_t dataSize, int32_t periodMs, int32_t *status); - void CANComm_ReceiveMessage(uint32_t *messageID, uint32_t messageIDMask, uint8_t *data, uint8_t *dataSize, uint32_t *timeStamp, int32_t *status); - void CANComm_OpenStreamSession(uint32_t *sessionHandle, uint32_t messageID, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status); - void CANComm_CloseStreamSession(uint32_t sessionHandle); -#ifdef __FRC_ROBORIO__ - void CANComm_ReadStreamSession(uint32_t sessionHandle, struct tCANStreamMessage *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status); -#else - void CANComm_ReadStreamSession(uint32_t sessionHandle, canframe_t *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status); -#endif - int32_t CANComm_GetTxSchedulerStatus(void *unusedControlWorld); // used to be GetControlWord + //------------ Mid Level CANBus interface, this is implemented by everyone (BusMgr for phoenix-canutil) ------------// + CTREXPORT void CANComm_SendMessage(uint32_t messageID, uint8_t const *data, uint8_t dataSize, int32_t periodMs, int32_t *status, char const *canbus, bool printErr = true); + CTREXPORT void CANComm_ReceiveMessage(uint32_t *messageID, uint32_t messageIDMask, uint8_t *data, uint8_t *dataSize, uint32_t *timeStamp, int32_t *status, char const *canbus, bool printErr = true); + CTREXPORT void CANComm_OpenStreamSession(uint32_t *sessionHandle, uint32_t messageID, uint32_t messageIDMask, uint32_t maxMessages, int32_t *status, char const *canbus, bool printErr = true); + CTREXPORT void CANComm_CloseStreamSession(uint32_t sessionHandle, char const *canbus, bool printErr = true); + CTREXPORT void CANComm_ReadStreamSession(uint32_t sessionHandle, canframe_t *messages, uint32_t messagesToRead, uint32_t *messagesRead, int32_t *status, char const *canbus, bool printErr = true); + CTREXPORT int32_t CANComm_GetTxSchedulerStatus(void *unusedControlWorld, char const *canbus, bool printErr = true); // used to be GetControlWord } //namespace can } //namespace platform @@ -58,40 +40,25 @@ namespace ctre { namespace phoenix { namespace platform { - enum DeviceType {TalonSRXType, VictorSPXType, CANifierType, PigeonIMUType}; - - /** - * @param timeUs How long to yield current thread in microseconds (us). - * If platform cannot honor us resolution, round to nearest - * value that platform can honor. - */ - void SleepUs(int timeUs); - /** * Get a stack trace, ignoring the first "offset" symbols. * * @param offset The number of symbols at the top of the stack to ignore */ - std::string GetStackTrace(int offset); - - void ReportError(int isError, int32_t errorCode, int isLVCode, - const char *details, const char *location, const char *callStack); + CTREXPORT std::string GetStackTrace(int offset); - int32_t SimCreate(DeviceType type, int id); + CTREXPORT int32_t DisposePlatform(); + CTREXPORT int32_t StartPlatform(); - int32_t SimConfigGet(DeviceType type, uint32_t param, uint32_t valueToSend, uint32_t & outValueReceived, uint32_t & outSubvalue, uint32_t ordinal, uint32_t id); - - int32_t SimConfigSet(DeviceType type, uint32_t param, uint32_t value, uint32_t subValue, uint32_t ordinal, uint32_t id); + CTREXPORT int32_t SimCreate(DeviceType type, int id); - int32_t SimDestroy(DeviceType type, int id); - int32_t SimDestroyAll(); + CTREXPORT int32_t SimDestroy(DeviceType type, int id); + CTREXPORT int32_t SimDestroyAll(); - int32_t DisposePlatform(); - int32_t StartPlatform(); + CTREXPORT int32_t SimSetPhysicsInput(DeviceType type, int id, std::string const &physicsType, double value); + CTREXPORT int32_t SimGetPhysicsValue(DeviceType type, int id, std::string const &physicsType, double &value); + CTREXPORT int32_t SimGetLastError(DeviceType type, int id); - int32_t DisposeMgr(); - int32_t StartMgr(); - } // namespace platform } // namespace phoenix } // namespace ctre diff --git a/include/ctre/phoenix/platform/PlatformSim.h b/include/ctre/phoenix/platform/PlatformSim.h deleted file mode 100644 index a966cbd..0000000 --- a/include/ctre/phoenix/platform/PlatformSim.h +++ /dev/null @@ -1,61 +0,0 @@ -#include "ctre/phoenix/platform/Platform.h" -#include "ctre/phoenix/cci/Platform_CCI.h" - -namespace ctre { -namespace phoenix { -namespace platform { - -/** - * Class for simulation as a platform - */ -class PlatformSim { - -public: - /** - * Create Device - * @param type Device Type - * @param id Device ID - * @return ErrorCode - */ - static int32_t SimCreate(DeviceType type, int id); - /** - * Destroy Device - * @param type Device Type - * @param id Device ID - * @return ErrorCode - */ - static int32_t SimDestroy(DeviceType type, int id); - /** - * Destroy all devices in sim - * @return ErrorCode - */ - static int32_t SimDestroyAll(); - /** - * Get configs of simulated device - * @param type Device Type - * @param param Param to get - * @param valueToSend subValue - * @param outValueReceived requested value - * @param outSubvalue requested subValue - * @param ordinal Ordinal - * @param id Device ID - * @return ErrorCode - */ - static int32_t SimConfigGet(DeviceType type, uint32_t param, uint32_t valueToSend, uint32_t & outValueReceived, uint32_t & outSubvalue, uint32_t ordinal, int32_t id); - /** - * Sets configs of simulated device - * @param type Device Type - * @param param Param to send - * @param value Value to send - * @param subValue Subvalue to send - * @param ordinal Ordinal - * @param id Device ID - * @return ErrorCode - */ - static int32_t SimConfigSet(DeviceType type, uint32_t param, uint32_t value, uint32_t subValue, uint32_t ordinal, int32_t id); - -}; - -} -} -} diff --git a/include/ctre/phoenix/platform/ReportError.h b/include/ctre/phoenix/platform/ReportError.h new file mode 100644 index 0000000..4f7d217 --- /dev/null +++ b/include/ctre/phoenix/platform/ReportError.h @@ -0,0 +1,14 @@ +#pragma once + +#include + +namespace ctre { +namespace phoenix { +namespace platform { + + void ReportError(int isError, int32_t errorCode, int isLVCode, const char *details, + const char *location, const char *callStack); + +} // namespace platform +} // namespace phoenix +} // namespace ctre \ No newline at end of file diff --git a/include/ctre/phoenix/platform/SleepUs.h b/include/ctre/phoenix/platform/SleepUs.h new file mode 100644 index 0000000..792b9ec --- /dev/null +++ b/include/ctre/phoenix/platform/SleepUs.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include + +#ifdef __FRC_ROBORIO__ +#include +#endif + +namespace ctre { +namespace phoenix { +namespace platform { + + /** + * @param timeUs How long to yield current thread in microseconds (us). + * If platform cannot honor us resolution, round to nearest + * value that platform can honor. + */ + static inline void SleepUs(int timeUs) + { +#ifdef __FRC_ROBORIO__ + usleep(timeUs); +#else + std::this_thread::sleep_for(std::chrono::microseconds(timeUs)); +#endif + } + +} // namespace platform +} // namespace phoenix +} // namespace ctre \ No newline at end of file diff --git a/include/ctre/phoenix/platform/can/PlatformCAN.h b/include/ctre/phoenix/platform/can/PlatformCAN.h index 5511099..4275fc7 100644 --- a/include/ctre/phoenix/platform/can/PlatformCAN.h +++ b/include/ctre/phoenix/platform/can/PlatformCAN.h @@ -16,9 +16,18 @@ class PlatformCAN { * Set CAN interface * @param canInterface Can interface to set. Linux example: "can0". * @return ErrorCode generated by function + * @deprecated pass the CAN interface to device constructors instead, + * or call RegisterCANbus */ static int32_t SetCANInterface(const char * canInterface); + /** + * Registers a non-compliant CANbus + * @param canbus CANbus to register. Linux example: "can0". + * @return ErrorCode generated by function + */ + static int32_t RegisterCANbus(char const *canbus); + /** * Starts all items in interface */ diff --git a/include/ctre/phoenix/platform/canframe.h b/include/ctre/phoenix/platform/canframe.h new file mode 100644 index 0000000..0a13252 --- /dev/null +++ b/include/ctre/phoenix/platform/canframe.h @@ -0,0 +1,25 @@ +#pragma once + +#include + +namespace ctre { +namespace phoenix { +namespace platform { +namespace can { + + /** + * "plain old data" container for holding a CAN Frame Event. + * Assignment of this type resolves to a copy-by-value. + */ + typedef struct _canframe_t { + uint32_t arbID; //!< ArbID of the CAN frame. + uint32_t timeStampUs; //!< Timestamp if receive event. Zero otherwise. + uint8_t data[64]; //!< Data bytes + uint32_t flags; //!< Zero for now. Can be used for detecting arbID type (29bit vs 11bit). + uint8_t len; //!< Number of bytes in payload + } canframe_t; + +} //namespace can +} //namespace platform +} //namespace phoenix +} //namespace ctre diff --git a/include/ctre/phoenix/platform/canivore_device.h b/include/ctre/phoenix/platform/canivore_device.h new file mode 100644 index 0000000..14eb9d0 --- /dev/null +++ b/include/ctre/phoenix/platform/canivore_device.h @@ -0,0 +1,13 @@ +#pragma once + +#include + +constexpr size_t kCANivoreMaxStrLen = 100; + +typedef struct _canivore_device_t { + char status[kCANivoreMaxStrLen]; + char name[kCANivoreMaxStrLen]; + char serial_num[kCANivoreMaxStrLen]; + char firm_vers[16]; + char discoveryStatus[kCANivoreMaxStrLen]; +} canivore_device_t; diff --git a/include/ctre/phoenix/platform/ctr_assert.h b/include/ctre/phoenix/platform/ctr_assert.h new file mode 100644 index 0000000..dff0bfb --- /dev/null +++ b/include/ctre/phoenix/platform/ctr_assert.h @@ -0,0 +1,23 @@ +#ifndef ctr_assert__h_ +#define ctr_assert__h_ + +#include "ctre/phoenix/platform/Platform-pack.h" // assert + +#if defined(_DEBUG) || defined(DEBUG) + #define CTR_DEBUGGING (1) +#else + #define CTR_DEBUGGING (0) +#endif + +#define CTR_STOP_DEBUGGER_ON_ASSERT (0) /* turn this off before deploying the so, otherwise RIO goes into safe mode. */ + +#define ctr_assert(cond) \ + do{ \ + if(CTR_DEBUGGING && !(cond)){ \ + if (CTR_STOP_DEBUGGER_ON_ASSERT) { CTRE_ASSERT(cond); } \ + printf("ctr_assert : %s : %s : %i\n",#cond,__FILE__,__LINE__); \ + } \ + }while(0) + +#endif /* ctr_assert__h_ */ + diff --git a/include/ctre/phoenix/runtime/LibLoader.h b/include/ctre/phoenix/runtime/LibLoader.h deleted file mode 100644 index 83e3c43..0000000 --- a/include/ctre/phoenix/runtime/LibLoader.h +++ /dev/null @@ -1,274 +0,0 @@ -/** - * @brief OS abstracted Library Loader class for DLLs/shared-objects. - * @author Ozrien - * - * This is useful for basic plugin systems. - - * Example Use... - *
- * {@code
- *     ctre::phoenix::runtime::LibLoader ldr;
- *     typedef int (*example_func_t)(...params...);
- *     try {
- *         ldr.Open("example.dll");
- *         int retval = LIBLOADER_LOOKUP(ldr, example_func_t)(...params...);
- *     } catch (const LibLoaderException & e) {}
- * }
- * 
- */ -#pragma once - -#include "ctre/phoenix/ErrorCode.h" -#include -#include -#include - - /** - * Use preprocessor to simplifiy getting func ptr by name, then calling. - * Example use: LIBLOADER_LOOKUP(loader, some_func_typedef)(... some func params ...) - */ -#define LIBLOADER_LOOKUP(libloader, funcT) (libloader).LookupFunc(#funcT) - -namespace ctre { - namespace phoenix { - namespace runtime { - /** - * LibLoaderException - */ - class LibLoaderException : public std::runtime_error { - public: - - LibLoaderException(phoenix::ErrorCode errorCode, const std::string& BaseMessage, const std::string & libPath) - : std::runtime_error((BaseMessage + " " + libPath).c_str()) - { - _errorCode = errorCode; - } - LibLoaderException(phoenix::ErrorCode errorCode, const std::string& BaseMessage, const std::string & libPath, const std::string & funcName) - : std::runtime_error((BaseMessage + " " + funcName + " in " + libPath).c_str()) - { - _errorCode = errorCode; - } - - phoenix::ErrorCode GetPhoenixErrorCode() const - { - return _errorCode; - } - private: - phoenix::ErrorCode _errorCode; - }; - } // runtime - } // phoenix -} // ctre - -#if defined(WIN32) || defined(_WIN32) || defined(_WIN64) -#include -namespace ctre { - namespace phoenix { - namespace runtime { - /** - * LibLoader - */ - class LibLoader { - - public: - /** default c'tor */ - LibLoader() { /* empty */ } - - /* no copy c'tr */ - LibLoader(const LibLoader&) = delete; - - /** d'tor */ - ~LibLoader() { Close(); } - - /** - * @param libPath filePath to dll to load, passed into LoadLibrary. - * Routine will throw LibLoaderException on failure. - */ - void Open(const std::string & libPath) { - /* if library already loaded, close it and start all over */ - Close(); - /* keep a copy for posterity */ - _libPath = libPath; - /* attempt to load the module (dll) */ - _handle = LoadLibraryA(_libPath.c_str()); - /* throw if it didn't load */ - if (_handle == NULL) { throw LibLoaderException(ErrorCode::LibraryCouldNotBeLoaded, "Could not load", _libPath); } - } - /** - * @return true if DLL/SO is loaded. - */ - bool IsOpen() const{ - return (_handle != NULL); - } - - /** - * Close DLL and clear func ptrs. - */ - void Close() { - /* dump the table, this is not necessary but good to dump bad func ptr*/ - _mp.clear(); - /* free the module */ - if (_handle != NULL) { - FreeLibrary(_handle); - _handle = NULL; - } - } - /** - * Lookup a function by name inside DLL. If func has been found already, performance should - * be fast since it is a map lookup. - * @param funcName string copy of function name. - * @return pointer to found function. - * Routine will throw LibLoaderException on failure. - */ - template T LookupFunc(const std::string & funcName) - { - /* make sure Open was called successfully */ - if (_handle == NULL) { throw LibLoaderException(ErrorCode::LibraryCouldNotBeLoaded, "Could not load", _libPath); } - - /* first check map, we might have it already */ - auto iter = _mp.find(funcName); - if (iter != _mp.end()) { return (T)iter->second; } - - /* pull func ptr out of lib */ - T funcPtr = (T)GetProcAddress(_handle, funcName.c_str()); - - /* did we get it? */ - if (funcPtr == NULL) { - /* couldn't find it dll, throw to caller */ - throw LibLoaderException(ErrorCode::MissingRoutineInLibrary, "Could not find routine", _libPath, funcName); - } - /* insert into coll */ - _mp[funcName] = (void*)funcPtr; - - /* pass new ptr to caller */ - return funcPtr; - } - - private: - std::string _libPath; //!< Copy of lib path, mostly for error reporting - std::map _mp; //!< Coll for func ptrs we've found this far - HINSTANCE _handle = NULL; //!< handle to module (dll) - }; - } // runtime - } // phoenix -} // ctre -#else -#include -#include - -namespace ctre { - namespace phoenix { - namespace runtime { - /** - * LibLoader - */ - class LibLoader { - - public: - /** default c'tor */ - LibLoader() { /* empty */ } - - /* no copy c'tr */ - LibLoader(const LibLoader&) = delete; - - /** d'tor */ - ~LibLoader() { Close(); } - - /** - * @param libPath filePath to dll to load, passed into LoadLibrary. - * Routine will throw LibLoaderException on failure. - */ - void Open(const std::string & libPath) { - /* if library already loaded, close it and start all over */ - Close(); - /* keep a copy for posterity */ - _libPath = libPath; - /* attempt to load the module (dll) */ - - _handle = dlopen(_libPath.c_str(), RTLD_NOW); - - /* throw if it didn't load */ - if (!_handle) { - std::string baseErr = dlerror(); - baseErr += " | With path: "; - - std::cout << baseErr << _libPath << std::endl; - throw; //LibLoaderException(ErrorCode::LibraryCouldNotBeLoaded, baseErr, _libPath); - } - } - /** - * @return true if DLL/SO is loaded. - */ - bool IsOpen() const{ - return (_handle != NULL); - } - - /** - * Close DLL and clear func ptrs. - */ - void Close(bool performDlclose) { - /* dump the table, this is not necessary but good to dump bad func ptr*/ - _mp.clear(); - /* free the module (fails in linux for unknown reasons). */ - if (_handle && performDlclose) { - dlclose(_handle); - } - } - - void Close() { - Close(false); - } - - /** - * Lookup a function by name inside DLL. If func has been found already, performance should - * be fast since it is a map lookup. - * @param funcName string copy of function name. - * @return pointer to found function. - * Routine will throw LibLoaderException on failure. - */ - template T LookupFunc(const std::string & funcName) - { - /* make sure Open was called successfully */ - if (!_handle) { - std::string baseErr = dlerror(); - baseErr += " | With path: "; - - std::cout << baseErr << _libPath << std::endl; - throw; //LibLoaderException(ErrorCode::LibraryCouldNotBeLoaded,baseErr, _libPath); - } - - /* first check map, we might have it already */ - auto iter = _mp.find(funcName); - if (iter != _mp.end()) { return (T)iter->second; } - - /* pull func ptr out of lib */ - T funcPtr = (T)dlsym(_handle, funcName.c_str()); - - /* did we get it? */ - if (funcPtr == NULL) { - /* couldn't find it dll, throw to caller */ - std::string baseErr = dlerror(); - baseErr += " | For: "; - - std::cout << baseErr << funcName << " in " << _libPath << std::endl; - - throw;// LibLoaderException(ErrorCode::MissingRoutineInLibrary,"Could not find routine", _libPath, funcName); - } - /* insert into coll */ - _mp[funcName] = (void*)funcPtr; - - /* pass new ptr to caller */ - return funcPtr; - } - - private: - std::string _libPath; //!< Copy of lib path, mostly for error reporting - std::map _mp; //!< Coll for func ptrs we've found this far - void *_handle = NULL; //!< handle to module (dll) - }; - } // runtime - } // phoenix -} // ctre - - -#endif diff --git a/include/ctre/phoenix/sensors/BasePigeon.h b/include/ctre/phoenix/sensors/BasePigeon.h new file mode 100644 index 0000000..8ded8da --- /dev/null +++ b/include/ctre/phoenix/sensors/BasePigeon.h @@ -0,0 +1,548 @@ +/* + * Software License Agreement + * + * Copyright (C) Cross The Road Electronics. All rights + * reserved. + * + * Cross The Road Electronics (CTRE) licenses to you the right to + * use, publish, and distribute copies of CRF (Cross The Road) firmware files (*.crf) and Software + * API Libraries ONLY when in use with Cross The Road Electronics hardware products. + * + * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT + * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT + * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * CROSS THE ROAD ELECTRONICS BE LIABLE FOR ANY INCIDENTAL, SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF + * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS + * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE + * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER + * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT + * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE + */ + +#pragma once + +#include +#include "ctre/phoenix/CANBusAddressable.h" +#include "ctre/phoenix/CustomParamConfiguration.h" +#include "ctre/phoenix/paramEnum.h" +#include "ctre/phoenix/ErrorCode.h" +#include "ctre/phoenix/sensors/PigeonIMU_ControlFrame.h" +#include "ctre/phoenix/sensors/PigeonIMU_Faults.h" +#include "ctre/phoenix/sensors/PigeonIMU_StatusFrame.h" +#include "ctre/phoenix/sensors/PigeonIMU_StickyFaults.h" +#include "ctre/phoenix/sensors/BasePigeonSimCollection.h" + +/* forward prototype */ +namespace ctre { +namespace phoenix { +namespace motorcontrol { +namespace can { +class TalonSRX; +} +} +} +} + +namespace ctre { +namespace phoenix { +/** sensors namespace */ +namespace sensors { + +/** + * Configurables available to Pigeon + */ +struct BasePigeonConfiguration : CustomParamConfiguration{ + BasePigeonConfiguration() {} + + /** + * @return String representation of configs + */ + std::string toString() { + return toString(""); + } + + /** + * @param prependString + * String to prepend to configs + * @return String representation of configs + */ + std::string toString(std::string prependString) { + std::string retstr = CustomParamConfiguration::toString(prependString); + + return retstr; + } +};// struct BasePigeon + +/** + * Util class to help with Pigeon configurations + */ +struct BasePigeonConfigUtils { +private: + static BasePigeonConfiguration _default; +public: + /** + * Determine if specified value is different from default + * @param settings settings to compare against + * @return if specified value is different from default + * @{ + */ + static bool CustomParam0Different (const BasePigeonConfiguration & settings) { return (!(settings.customParam0 == _default.customParam0)) || !settings.enableOptimizations; } + static bool CustomParam1Different (const BasePigeonConfiguration & settings) { return (!(settings.customParam1 == _default.customParam1)) || !settings.enableOptimizations; } + /** @} */ +}; + +/** + * Pigeon IMU Class. + * Class supports communicating over CANbus and over ribbon-cable (CAN Talon SRX). + */ +class BasePigeon: public CANBusAddressable { +public: + + /** + * Create a Pigeon object that communicates with Pigeon on CAN Bus. + * + * @param deviceNumber + * CAN Device Id of Pigeon [0,62] + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number + */ + BasePigeon(int deviceNumber, std::string const &version, std::string const &canbus = ""); + + ~BasePigeon(); + + /** + * Destructs all pigeon objects + */ + static void DestroyAllBasePigeons(); + + /** + * Sets the Yaw register to the specified value. + * + * @param angleDeg Degree of Yaw [+/- 368,640 degrees] + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + int SetYaw(double angleDeg, int timeoutMs = 0); + /** + * Atomically add to the Yaw register. + * + * @param angleDeg Degrees to add to the Yaw register. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + int AddYaw(double angleDeg, int timeoutMs = 0); + /** + * Sets the Yaw register to match the current compass value. + * + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + int SetYawToCompass(int timeoutMs = 0); + + /** + * Sets the AccumZAngle. + * + * @param angleDeg Degrees to set AccumZAngle to. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + int SetAccumZAngle(double angleDeg, int timeoutMs = 0); + /** + * Call GetLastError() generated by this object. + * Not all functions return an error code but can + * potentially report errors. + * + * This function can be used to retrieve those error codes. + * + * @return The last ErrorCode generated. + */ + ErrorCode GetLastError() const; + /** + * Get 6d Quaternion data. + * + * @param wxyz Array to fill with quaternion data w[0], x[1], y[2], z[3] + * @return The last ErrorCode generated. + */ + ErrorCode Get6dQuaternion(double wxyz[4]) const; + /** + * Get Yaw, Pitch, and Roll data. + * + * @param ypr Array to fill with yaw[0], pitch[1], and roll[2] data. + * Yaw is within [-368,640, +368,640] degrees. + * Pitch is within [-90,+90] degrees. + * Roll is within [-90,+90] degrees. + * @return The last ErrorCode generated. + */ + ErrorCode GetYawPitchRoll(double ypr[3]) const; + /** + * Get the yaw from the Pigeon + * @return Yaw + */ + double GetYaw() const; + /** + * Get the pitch from the Pigeon + * @return Pitch + */ + double GetPitch() const; + /** + * Get the roll from the Pigeon + * @return Roll + */ + double GetRoll() const; + /** + * Get AccumGyro data. + * AccumGyro is the integrated gyro value on each axis. + * + * @param xyz_deg Array to fill with x[0], y[1], and z[2] AccumGyro data + * @return The last ErrorCode generated. + */ + int GetAccumGyro(double xyz_deg[3]) const; + /** + * Get the absolute compass heading. + * @return compass heading [0,360) degrees. + */ + double GetAbsoluteCompassHeading() const; + /** + * Get the continuous compass heading. + * @return continuous compass heading [-23040, 23040) degrees. Use + * SetCompassHeading to modify the wrap-around portion. + */ + double GetCompassHeading() const; + /** + * Gets the compass' measured magnetic field strength. + * @return field strength in Microteslas (uT). + */ + double GetCompassFieldStrength() const; + /** + * Gets the temperature of the pigeon. + * + * @return Temperature in ('C) + */ + double GetTemp() const; + /** + * Gets the current Pigeon uptime. + * + * @return How long has Pigeon been running in whole seconds. Value caps at + * 255. + */ + uint32_t GetUpTime() const; + /** + * Get Raw Magnetometer data. + * + * @param rm_xyz Array to fill with x[0], y[1], and z[2] data + * Number is equal to 0.6 microTeslas per unit. + * @return The last ErrorCode generated. + */ + int GetRawMagnetometer(int16_t rm_xyz[3]) const; + + /** + * Get Biased Magnetometer data. + * + * @param bm_xyz Array to fill with x[0], y[1], and z[2] data + * Number is equal to 0.6 microTeslas per unit. + * @return The last ErrorCode generated. + */ + int GetBiasedMagnetometer(int16_t bm_xyz[3]) const; + /** + * Get Biased Accelerometer data. + * + * @param ba_xyz Array to fill with x[0], y[1], and z[2] data. + * These are in fixed point notation Q2.14. eg. 16384 = 1G + * @return The last ErrorCode generated. + */ + int GetBiasedAccelerometer(int16_t ba_xyz[3]) const; + /** + * Get Raw Gyro data. + * + * @param xyz_dps Array to fill with x[0], y[1], and z[2] data in degrees per second. + * @return The last ErrorCode generated. + */ + int GetRawGyro(double xyz_dps[3]) const; + /** + * @return number of times Pigeon Reset + */ + uint32_t GetResetCount() const; + /** + * @return Reset flags for Pigeon + */ + uint32_t GetResetFlags() const; + /** + * @return firmware version of Pigeon + */ + uint32_t GetFirmVers() const; + + /** + * @return true iff a reset has occurred since last call. + */ + bool HasResetOccurred() const; + + /** + * Sets the value of a custom parameter. This is for arbitrary use. + * + * Sometimes it is necessary to save calibration/declination/offset + * information in the device. Particularly if the + * device is part of a subsystem that can be replaced. + * + * @param newValue + * Value for custom parameter. + * @param paramIndex + * Index of custom parameter. [0-1] + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigSetCustomParam(int newValue, int paramIndex, int timeoutMs = 0); + /** + * Gets the value of a custom parameter. This is for arbitrary use. + * + * Sometimes it is necessary to save calibration/declination/offset + * information in the device. Particularly if the + * device is part of a subsystem that can be replaced. + * + * @param paramIndex + * Index of custom parameter. [0-1] + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Value of the custom param. + */ + int ConfigGetCustomParam(int paramIndex, int timeoutMs = 0); + /** + * Sets a parameter. Generally this is not used. + * This can be utilized in + * - Using new features without updating API installation. + * - Errata workarounds to circumvent API implementation. + * - Allows for rapid testing / unit testing of firmware. + * + * @param param + * Parameter enumeration. + * @param value + * Value of parameter. + * @param subValue + * Subvalue for parameter. Maximum value of 255. + * @param ordinal + * Ordinal of parameter. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigSetParameter(ParamEnum param, double value, + uint8_t subValue, int ordinal, int timeoutMs = 0); + /** + * Gets a parameter. Generally this is not used. + * This can be utilized in + * - Using new features without updating API installation. + * - Errata workarounds to circumvent API implementation. + * - Allows for rapid testing / unit testing of firmware. + * + * @param param + * Parameter enumeration. + * @param ordinal + * Ordinal of parameter. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Value of parameter. + */ + double ConfigGetParameter(ctre::phoenix::ParamEnum param, int ordinal, int timeoutMs = 0); + /** + * Gets a parameter by passing an int by reference + * + * @param param + * Parameter enumeration + * @param valueToSend + * Value to send to parameter + * @param valueReceived + * Reference to integer to receive + * @param subValue + * SubValue of parameter + * @param ordinal + * Ordinal of parameter + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigGetParameter(ParamEnum param, int32_t valueToSend, + int32_t & valueReceived, uint8_t & subValue, int32_t ordinal, + int32_t timeoutMs); + + /** + * Sets the period of the given status frame. + * + * @param statusFrame + * Frame whose period is to be changed. + * @param periodMs + * Period in ms for the given frame. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode SetStatusFramePeriod(PigeonIMU_StatusFrame statusFrame, uint8_t periodMs, + int timeoutMs = 0); + + /** + * Gets the period of the given status frame. + * + * @param frame + * Frame to get the period of. + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return Period of the given status frame. + */ + int GetStatusFramePeriod(PigeonIMU_StatusFrame frame, + int timeoutMs = 0) ; + /** + * Sets the period of the given control frame. + * + * @param frame + * Frame whose period is to be changed. + * @param periodMs + * Period in ms for the given frame. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode SetControlFramePeriod(PigeonIMU_ControlFrame frame, + int periodMs); + /** + * Gets the firmware version of the device. + * + * @return param holds the firmware version of the device. Device must be powered + * cycled at least once. + */ + int GetFirmwareVersion() ; + /** + * Clears the Sticky Faults + * + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ClearStickyFaults(int timeoutMs = 0); + + /** + * @return Pigeon resource handle. + */ + void* GetLowLevelHandle() const { + return _handle; + } + + //------ All Configs ----------// + /** + * Configures all persistent settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * + * @return Error Code generated by function. 0 indicates no error. + */ + virtual ctre::phoenix::ErrorCode ConfigAllSettings(const BasePigeonConfiguration &allConfigs, int timeoutMs = 50); + /** + * Gets all persistant settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + */ + virtual void GetAllConfigs(BasePigeonConfiguration &allConfigs, int timeoutMs = 50); + /** + * Configures all persistent settings to defaults. + * + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * + * @return Error Code generated by function. 0 indicates no error. + */ + virtual ErrorCode ConfigFactoryDefault(int timeoutMs = 50); + + /** + * @return object that can set simulation inputs. + */ + virtual BasePigeonSimCollection& GetSimCollection(); +private: + /** firmware state reported over CAN */ + enum MotionDriverState { + Init0 = 0, + WaitForPowerOff = 1, + ConfigAg = 2, + SelfTestAg = 3, + StartDMP = 4, + ConfigCompass_0 = 5, + ConfigCompass_1 = 6, + ConfigCompass_2 = 7, + ConfigCompass_3 = 8, + ConfigCompass_4 = 9, + ConfigCompass_5 = 10, + SelfTestCompass = 11, + WaitForGyroStable = 12, + AdditionalAccelAdjust = 13, + Idle = 14, + Calibration = 15, + LedInstrum = 16, + Error = 31, + }; + /** sub command for the various Set param enums */ + enum TareType { + SetValue = 0x00, AddOffset = 0x01, MatchCompass = 0x02, SetOffset = 0xFF, + }; + /** data storage for reset signals */ + struct ResetStats { + int32_t resetCount; + int32_t resetFlags; + int32_t firmVers; + bool hasReset; + }; + ResetStats _resetStats = { 0, 0, 0, false }; + + /** Portion of the arbID for all status and control frames. */ + void* _handle; + uint32_t _deviceNumber; + uint32_t _usageHist = 0; + uint64_t _cache; + uint32_t _len; + BasePigeonSimCollection* _simCollection; + + /** overall threshold for when frame data is too old */ + const uint32_t EXPECTED_RESPONSE_TIMEOUT_MS = (200); + + int PrivateSetParameter(ParamEnum paramEnum, TareType tareType, + double angleDeg, int timeoutMs = 0); + + double GetTemp(const uint64_t & statusFrame); + +protected: + BasePigeon(ctre::phoenix::motorcontrol::can::TalonSRX& talonSrx); + +};// class BasePigeon +} // namespace signals +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/sensors/BasePigeonSimCollection.h b/include/ctre/phoenix/sensors/BasePigeonSimCollection.h new file mode 100644 index 0000000..9b88260 --- /dev/null +++ b/include/ctre/phoenix/sensors/BasePigeonSimCollection.h @@ -0,0 +1,67 @@ +#pragma once + +#include "ctre/phoenix/ErrorCode.h" +#include "ctre/phoenix/cci/Platform_CCI.h" + +/* forward proto's */ +namespace ctre { + namespace phoenix { + namespace sensors { + class BasePigeon; + } + } +} + +namespace ctre { + namespace phoenix { + namespace sensors { + /** + * Collection of simulation functions available to a Pigeon IMU. + * Use the getSimCollection() function in your BasePigeon object to create the respective sim collection. + */ + class BasePigeonSimCollection { + public: + /** + * @param pigeon Pigeon IMU to connect so sim collection + */ + BasePigeonSimCollection(ctre::phoenix::sensors::BasePigeon& pigeon, bool isRibbonCable); + + /** + * Sets the simulated input heading position of the Pigeon IMU. + * + * The Pigeon IMU integrates the delta between each new raw heading value and uses + * this to calculate the true reported yaw and fused heading. + * + * When using the WPI Sim GUI, you will notice a readonly 'yaw' and + * settable 'RawHeading'. The readonly signal is the emulated yaw + * which will match self-test in Tuner and the hardware API. Changes to + * 'RawHeading' will be integrated into the emulated yaw. This way + * a simulator can modify the heading without overriding your + * hardware API calls for home-ing your sensor. + * + * Inputs to this function over time should be continuous, + * as user calls of setYaw() or setFusedHeading() + * will be accounted for in the calculation. + * + * @param newHeading the new input heading in degrees + * + * @return error code + */ + ErrorCode SetRawHeading(double newHeading); + + /** + * Adds to the simulated heading of the Pigeon IMU + * + * @param dHeading the change in heading in degrees + * + * @return error code + */ + ErrorCode AddHeading(double dHeading); + + private: + int _id; + ctre::phoenix::platform::DeviceType _type; + }; + } + } +} \ No newline at end of file diff --git a/include/ctre/phoenix/sensors/CANCoder.h b/include/ctre/phoenix/sensors/CANCoder.h index 5b695f6..e7156f8 100644 --- a/include/ctre/phoenix/sensors/CANCoder.h +++ b/include/ctre/phoenix/sensors/CANCoder.h @@ -6,6 +6,7 @@ #include "ctre/phoenix/ErrorCode.h" #include "ctre/phoenix/paramEnum.h" #include "ctre/phoenix/sensors/AbsoluteSensorRange.h" +#include "ctre/phoenix/sensors/CANCoderSimCollection.h" #include "ctre/phoenix/sensors/CANCoderStatusFrame.h" #include "ctre/phoenix/sensors/CANCoderStickyFaults.h" #include "ctre/phoenix/sensors/CANCoderFaults.h" @@ -140,17 +141,40 @@ namespace ctre { /** - * CTRE CANCoder + * CTRE CANCoder. * - * Device for interfacing common devices to the CAN bus. + *
+			 * {@code
+			 * // Example usage of a CANCoder
+			 * CANCoder cancoder{0}; // creates a new CANCoder with ID 0
+			 *
+			 * CANCoderConfiguration config;
+			 * // set units of the CANCoder to radians, with velocity being radians per second
+			 * config.sensorCoefficient = 2 * M_PI / 4096.0;
+			 * config.unitString = "rad";
+			 * config.sensorTimeBase = SensorTimeBase::PerSecond;
+			 * cancoder.ConfigAllSettings(config);
+			 *
+			 * std::cout << cancoder.GetPosition() << std::endl; // prints the position of the CANCoder
+			 * std::cout << cancoder.GetVelocity() << std::endl; // prints the velocity recorded by the CANCoder
+			 *
+			 * ErrorCode error = cancoder.GetLastError(); // gets the last error generated by the CANCoder
+			 * CANCoderFaults faults;
+			 * ErrorCode faultsError = cancoder.GetFaults(faults); // fills faults with the current CANCoder faults; returns the last error generated
+			 *
+			 * cancoder.SetStatusFramePeriod(CANCoderStatusFrame_SensorData, 10); // changes the period of the sensor data frame to 10ms
+			 * }
+			 * 
*/ class CANCoder : public CANBusAddressable { public: /** * Constructor. * @param deviceNumber The CAN Device ID of the CANCoder. + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number */ - CANCoder(int deviceNumber); + CANCoder(int deviceNumber, std::string const &canbus = ""); ~CANCoder(); @@ -517,10 +541,16 @@ namespace ctre { */ ErrorCode ConfigFactoryDefault(int timeoutMs = 50); + /** + * @return object that can set simulation inputs. + */ + CANCoderSimCollection& GetSimCollection(); + private: void* m_handle; + CANCoderSimCollection* _simCollection; - };// class CANCoder + };// class CANCoder } // namespace sensor } // namespace phoenix diff --git a/include/ctre/phoenix/sensors/CANCoderSimCollection.h b/include/ctre/phoenix/sensors/CANCoderSimCollection.h new file mode 100644 index 0000000..13c6f7e --- /dev/null +++ b/include/ctre/phoenix/sensors/CANCoderSimCollection.h @@ -0,0 +1,89 @@ +#pragma once + +#include "ctre/phoenix/ErrorCode.h" +#include "ctre/phoenix/cci/Platform_CCI.h" + +/* forward proto's */ +namespace ctre { + namespace phoenix { + namespace sensors { + class CANCoder; + } + } +} + +namespace ctre { + namespace phoenix { + namespace sensors { + /** + * Collection of simulation functions available to a CANCoder. + * + * Use the getSimCollection() function in your CANCoder object to create the respective sim collection. + */ + class CANCoderSimCollection { + public: + /** + * Constructor for CANCoderSimCollection + * + * @param canCoder CANCoder to connect Collection to + */ + CANCoderSimCollection(ctre::phoenix::sensors::CANCoder& canCoder); + + /** + * Sets the simulated bus voltage of the CANCoder. + * + * The minimum allowed bus voltage is 4 V - values + * below this will be promoted to 4 V. + * + * @param vbat the bus voltage in volts + * + * @return error code + */ + ErrorCode SetBusVoltage(double vbat); + + /** + * Sets the simulated raw position of the CANCoder. + * + * The CANCoder integrates this to calculate the true reported position. + * + * When using the WPI Sim GUI, you will notice a readonly 'position' and + * settable 'rawPositionInput'. The readonly signal is the emulated position + * which will match self-test in Tuner and the hardware API. Changes to + * 'rawPositionInput' will be integrated into the emulated position. This way + * a simulator can modify the position without overriding your + * hardware API calls for home-ing your sensor. + * + * Inputs to this function over time should be continuous, as user calls + * of setPosition() will be accounted for in the calculation. + * + * @param newPos the new raw position in native units + * + * @return error code + */ + ErrorCode SetRawPosition(int newPos); + + /** + * Adds to the simulated position of the CANCoder. + * + * @param dPos the change in position in native units + * + * @return error code + */ + ErrorCode AddPosition(int dPos); + + /** + * Sets the simulated velocity of the CANCoder. + * + * @param newVel the new velocity in native units per 100ms + * + * @return error code + */ + ErrorCode SetVelocity(int newVel); + + private: + int _id; + ctre::phoenix::platform::DeviceType _type; + }; + } + } +} \ No newline at end of file diff --git a/include/ctre/phoenix/sensors/Pigeon2.h b/include/ctre/phoenix/sensors/Pigeon2.h new file mode 100644 index 0000000..92a3e91 --- /dev/null +++ b/include/ctre/phoenix/sensors/Pigeon2.h @@ -0,0 +1,349 @@ +/* + * Software License Agreement + * + * Copyright (C) Cross The Road Electronics. All rights + * reserved. + * + * Cross The Road Electronics (CTRE) licenses to you the right to + * use, publish, and distribute copies of CRF (Cross The Road) firmware files (*.crf) and Software + * API Libraries ONLY when in use with Cross The Road Electronics hardware products. + * + * THE SOFTWARE AND DOCUMENTATION ARE PROVIDED "AS IS" WITHOUT + * WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT + * LIMITATION, ANY WARRANTY OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL + * CROSS THE ROAD ELECTRONICS BE LIABLE FOR ANY INCIDENTAL, SPECIAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, COST OF + * PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, ANY CLAIMS + * BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY DEFENSE + * THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER + * SIMILAR COSTS, WHETHER ASSERTED ON THE BASIS OF CONTRACT, TORT + * (INCLUDING NEGLIGENCE), BREACH OF WARRANTY, OR OTHERWISE + */ + +#pragma once + +#include +#include "ctre/phoenix/CANBusAddressable.h" +#include "ctre/phoenix/CustomParamConfiguration.h" +#include "ctre/phoenix/paramEnum.h" +#include "ctre/phoenix/ErrorCode.h" +#include "ctre/phoenix/sensors/PigeonIMU_ControlFrame.h" +#include "ctre/phoenix/sensors/Pigeon2_Faults.h" +#include "ctre/phoenix/sensors/PigeonIMU_StatusFrame.h" +#include "ctre/phoenix/sensors/Pigeon2_StickyFaults.h" +#include "ctre/phoenix/sensors/BasePigeonSimCollection.h" +#include "ctre/phoenix/sensors/BasePigeon.h" + +/* forward prototype */ +namespace ctre { +namespace phoenix { +namespace motorcontrol { +namespace can { +class TalonSRX; +} +} +} +} + +namespace ctre { +namespace phoenix { +/** sensors namespace */ +namespace sensors { + +/** + * Configurables available to Pigeon + */ +struct Pigeon2Configuration : CustomParamConfiguration{ + double MountPoseYaw {0}; + double MountPosePitch {0}; + double MountPoseRoll {0}; + bool EnableCompass {false}; + bool DisableTemperatureCompensation {false}; + bool DisableNoMotionCalibration {false}; + double XAxisGyroError{0}; + double YAxisGyroError{0}; + double ZAxisGyroError{0}; + Pigeon2Configuration() {} + + /** + * @return String representation of configs + */ + std::string toString() { + return toString(""); + } + + /** + * @param prependString + * String to prepend to configs + * @return String representation of configs + */ + std::string toString(std::string prependString) { + std::string retstr = CustomParamConfiguration::toString(prependString); + + return retstr; + } +};// struct Pigeon2 + +/** + * Util class to help with Pigeon configurations + */ +struct Pigeon2ConfigUtils { +private: + static Pigeon2Configuration _default; +public: + /** + * Determine if specified value is different from default + * @param settings settings to compare against + * @return if specified value is different from default + * @{ + */ + static bool MountPoseYawDifferent (const Pigeon2Configuration & settings) { return (!(settings.MountPoseYaw == _default.MountPoseYaw)) || !settings.enableOptimizations; } + static bool MountPosePitchDifferent (const Pigeon2Configuration & settings) { return (!(settings.MountPosePitch == _default.MountPosePitch)) || !settings.enableOptimizations; } + static bool MountPoseRollDifferent(const Pigeon2Configuration & settings) { return (!(settings.MountPoseRoll == _default.MountPoseRoll)) || !settings.enableOptimizations; } + static bool EnableCompassDifferent(const Pigeon2Configuration & settings) { return (!(settings.EnableCompass == _default.EnableCompass)) || !settings.enableOptimizations; } + static bool DisableTemperatureCompensationDifferent(const Pigeon2Configuration & settings) { return (!(settings.DisableTemperatureCompensation == _default.DisableTemperatureCompensation)) || !settings.enableOptimizations; } + static bool DisableNoMotionCalibrationDifferent(const Pigeon2Configuration & settings) { return (!(settings.DisableNoMotionCalibration == _default.DisableNoMotionCalibration)) || !settings.enableOptimizations; } + static bool XAxisGyroErrorDifferent(Pigeon2Configuration settings) { return (!(settings.XAxisGyroError == _default.XAxisGyroError)) || !settings.enableOptimizations; } + static bool YAxisGyroErrorDifferent(Pigeon2Configuration settings) { return (!(settings.YAxisGyroError == _default.YAxisGyroError)) || !settings.enableOptimizations; } + static bool ZAxisGyroErrorDifferent(Pigeon2Configuration settings) { return (!(settings.ZAxisGyroError == _default.ZAxisGyroError)) || !settings.enableOptimizations; } + static bool CustomParam0Different (const Pigeon2Configuration & settings) { return (!(settings.customParam0 == _default.customParam0)) || !settings.enableOptimizations; } + static bool CustomParam1Different (const Pigeon2Configuration & settings) { return (!(settings.customParam1 == _default.customParam1)) || !settings.enableOptimizations; } + /** @} */ +}; + +/** + * Enumerations for what primary axis to talk about + * Positive indicates in n the direction, negative indicates in the opposite direction + */ +enum class AxisDirection { + PositiveZ, + PositiveY, + PositiveX, + NegativeZ, + NegativeY, + NegativeX, +}; + +/** + * Pigeon 2 Class. Class supports communicating over CANbus. + * + *
+ * {@code
+ * // Example usage of a Pigeon 2
+ * Pigeon2 pigeon{0}; // creates a new Pigeon2 with ID 0
+ *
+ * Pigeon2Configuration config;
+ * // set mount pose as rolled 90 degrees counter-clockwise
+ * config.MountPoseYaw = 0;
+ * config.MountPosePitch = 0;
+ * config.MountPoseRoll = 90;
+ * pigeon.ConfigAllSettings(config);
+ *
+ * std::cout << pigeon.GetYaw() << std::endl; // prints the yaw of the Pigeon
+ * std::cout << pigeon.GetPitch() << std::endl; // prints the pitch of the Pigeon
+ * std::cout << pigeon.GetRoll() << std::endl; // prints the roll of the Pigeon
+ *
+ * double gravityVec[3];
+ * pigeon.GetGravityVector(gravityVec); // gets the gravity vector of the Pigeon 2
+ *
+ * ErrorCode error = pigeon.GetLastError(); // gets the last error generated by the Pigeon
+ * Pigeon2_Faults faults;
+ * ErrorCode faultsError = pigeon.GetFaults(faults); // fills faults with the current Pigeon 2 faults; returns the last error generated
+ * }
+ * 
+ */ +class Pigeon2: public BasePigeon { +public: + /** + * Create a Pigeon object that communicates with Pigeon on CAN Bus. + * + * @param deviceNumber + * CAN Device Id of Pigeon [0,62] + * @param canbus Name of the CANbus; can be a SocketCAN interface (on Linux), + * or a CANivore device name or serial number + */ + Pigeon2(int deviceNumber, std::string const &canbus = ""); + /** + * Gets the fault status + * + * @param toFill + * Container for fault statuses. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode GetFaults(Pigeon2_Faults & toFill) ; + /** + * Gets the sticky fault status + * + * @param toFill + * Container for sticky fault statuses. + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode GetStickyFaults(Pigeon2_StickyFaults & toFill); + + /** + * Configure the Mount Pose using the primary axis. + * This is useful if the Pigeon 2.0 is mounted straight, and you only + * need to describe what axis is forward and what axis is up. + * + * @param forward Axis that points forward from the robot + * @param up Axis that points up from the robot + * @param timeoutMs Config timeout in milliseconds. + * @return OK if successful, InvalidParamValue if both forward and up are of the same primary axis, otherwise config return. + */ + ErrorCode ConfigMountPose(AxisDirection forward, AxisDirection up, int timeoutMs = 50); + + /** + * Configure the mounting pose of the Pigeon2.

+ * This is the Yaw-Pitch-Roll the Pigeon2 underwent to get to its current + * orientation, referenced from the robot's point of view.

+ * This is only necessary if the Pigeon2 is mounted at an exotic angle + * near the gimbal lock point or not forward.

+ * If the pigeon is relatively flat and pointed forward, this is not needed.

+ *

+ * Examples:

+ * If the Pigeon2 is pointed directly right, that corresponds to a -90 yaw, + * 0 pitch, and 0 roll, as it yaw'd 90 degrees clockwise.

+ * If the Pigeon2 points upwards, that's a 0 yaw, -90 pitch, 0 roll, as it + * pitched 90 degrees clockwise.

+ * @param yaw Yaw angle needed to reach the current orientation in degrees. + * @param pitch Pitch angle needed to reach the current orientation in degrees. + * @param roll Roll angle needed to reach the current orientation in degrees. + * @param timeoutMs Config timeout in milliseconds. + * @return Worst error code of all config sets. + */ + ErrorCode ConfigMountPose(double yaw, double pitch, double roll, int timeoutMs = 0); + /** + * Configure the mounting pose Yaw of the Pigeon2. + * See {@link #configMountPose(double, double, double, int)} + * + * @param yaw Yaw angle needed to reach the current orientation in degrees. + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode of configSet + */ + ErrorCode ConfigMountPoseYaw(double yaw, int timeoutMs = 0); + /** + * Configure the mounting pose Pitch of the Pigeon2. + * See {@link #configMountPose(double, double, double, int)} + * + * @param pitch Pitch angle needed to reach the current orientation in degrees. + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode of configSet + */ + ErrorCode ConfigMountPosePitch(double pitch, int timeoutMs = 0); + /** + * Configure the mounting pose Roll of the Pigeon2. + * See {@link #configMountPose(double, double, double, int)} + * + * @param roll Roll angle needed to reach the current orientation in degrees. + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode of configSet + */ + ErrorCode ConfigMountPoseRoll(double roll, int timeoutMs = 0); + /** + * Configures the X Axis Gyroscope Error for 1 rotation + * @param err Degrees that Pigeon 2.0 overshot after 1 rotation (i.e. overshot 1 degree is 1; undershot by 3 degrees is -3) + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode fo configSet + */ + ErrorCode ConfigXAxisGyroError(double err, int timeoutMs = 0); + /** + * Configures the Y Axis Gyroscope Error for 1 rotation + * @param err Degrees that Pigeon 2.0 overshot after 1 rotation (i.e. overshot 1 degree is 1; undershot by 3 degrees is -3) + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode fo configSet + */ + ErrorCode ConfigYAxisGyroError(double err, int timeoutMs = 0); + /** + * Configures the Z Axis Gyroscope Error for 1 rotation + * @param err Degrees that Pigeon 2.0 overshot after 1 rotation (i.e. overshot 1 degree is 1; undershot by 3 degrees is -3) + * @param timeoutMs Config timeout in milliseconds. + * @return ErrorCode fo configSet + */ + ErrorCode ConfigZAxisGyroError(double err, int timeoutMs = 0); + + /** + * Enables the magnetometer fusion for Pigeon2. This is **not** recommended for FRC use + * + * @param enable Boolean to enable/disable magnetometer fusion + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode Status of the config response + */ + ErrorCode ConfigEnableCompass(bool enable, int timeoutMs = 0); + /** + * Disables temperature compensation from Pigeon2. + * + * @param disable Boolean to disable/enable temperature compensation + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode Status of the config response + */ + ErrorCode ConfigDisableTemperatureCompensation(bool disable, int timeoutMs = 0); + /** + * Disables the no-motion calibration from Pigeon2 + * + * @param disable Boolean to disable/enable no-motion calibration + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode Status of the config response + */ + ErrorCode ConfigDisableNoMotionCalibration(bool disable, int timeoutMs = 0); + + /** + * Performs an offset calibration on gyro bias + * + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * @return ErrorCode Status of the config response + */ + ErrorCode ZeroGyroBiasNow(int timeoutMs = 0); + + /** + * Get the Gravity Vector. + * + * This provides a vector that points toward ground. This is useful for applications like + * an arm, where the z-value of the gravity vector corresponds to the feed-forward needed + * to hold the arm steady. + * The gravity vector is calculated after the mount pose, so if the pigeon is where it was + * mounted, the gravity vector is {0, 0, 1}. + * @param gravVector Pass in a double array of size 3 to get the gravity vector + * @return Errorcode of getter + */ + ErrorCode GetGravityVector(double gravVector[3]) const; + + /** + * Configures all persistent settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + * + * @return Error Code generated by function. 0 indicates no error. + */ + ErrorCode ConfigAllSettings(Pigeon2Configuration& settings, int timeoutMs = 50); + /** + * Gets all persistant settings. + * + * @param allConfigs Object with all of the persistant settings + * @param timeoutMs + * Timeout value in ms. If nonzero, function will wait for + * config success and report an error if it times out. + * If zero, no blocking or checking is performed. + */ + void GetAllConfigs(Pigeon2Configuration& allConfigs, int timeoutMs = 50); + +};// class Pigeon2 +} // namespace signals +} // namespace phoenix +} // namespace ctre diff --git a/include/ctre/phoenix/sensors/Pigeon2_Faults.h b/include/ctre/phoenix/sensors/Pigeon2_Faults.h new file mode 100644 index 0000000..e7331b9 --- /dev/null +++ b/include/ctre/phoenix/sensors/Pigeon2_Faults.h @@ -0,0 +1,148 @@ +#pragma once + +#include + +namespace ctre { +namespace phoenix { +namespace sensors { + +/** + * Sticky faults available to Pigeon + */ +struct Pigeon2_Faults { + /** + * Device detects hardware failure + */ + bool HardwareFault; + /** + * API error detected. Make sure API and firmware versions are compatible. + */ + bool APIError; + /** + * Device is under 6.5V + */ + bool UnderVoltage; + /** + * Device was powered-on or reset while robot is enabled. + * Check your breakers and wiring. + */ + bool ResetDuringEn; + /** + * The device rotated at a rate that exceeded its maximum. + * Increase the range or slow the rate of rotation. + */ + bool SaturatedRotVelocity; + /** + * The device saw an acceleration that exceeded its maximum. + * Increase the range or avoid high-g events. + */ + bool SaturatedAccel; + /** + * The device saw a magnetic field that exceeded its maximum. + * Keep the device far from strong magnetic fields. + */ + bool SaturatedMag; + /** + * The Pigeon saw motion as soon as it booted, and didn't + * attempt to self-test its features. + * This isn't an issue, but to prevent this don't turn the + * robot on while moving it. + */ + bool BootIntoMotion; + /** + * The magnetometer failed its self-test. + * This is likely due to hardware damage, oftentimes from + * exposing the Pigeon to a very large magnetic field. + */ + bool MagnetometerFault; + /** + * The gyro failed its self-test. + * This is likely due to hardware damage. + */ + bool GyroFault; + /** + * The Accelerometer failed its self-test. + * This is likely due to hardware damage, oftentimes from + * exposing the Pigeon to a very large impact. + */ + bool AccelFault; + + /** + * @return true if any faults are tripped + */ + bool HasAnyFault() const { + return HardwareFault | + APIError | + UnderVoltage | + ResetDuringEn | + SaturatedRotVelocity | + SaturatedAccel | + SaturatedMag | + BootIntoMotion | + MagnetometerFault | + GyroFault | + AccelFault; + } + /** + * @return Current fault list as a bit field + */ + uint64_t ToBitfield() const { + uint64_t commonFaults = 0; + commonFaults |= HardwareFault ? 1 : 0; commonFaults <<= 1; + commonFaults |= APIError ? 1 : 0; commonFaults <<= 1; + commonFaults |= UnderVoltage ? 1 : 0; commonFaults <<= 1; + commonFaults |= ResetDuringEn ? 1 : 0; commonFaults <<= 1; + + uint64_t deviceFaults = 0; + deviceFaults |= SaturatedRotVelocity ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= SaturatedAccel ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= SaturatedMag ? 1 : 0; deviceFaults <<= 1; + deviceFaults <<= 1; /* Unused bitfield */ + deviceFaults <<= 1; + deviceFaults <<= 1; + deviceFaults |= BootIntoMotion ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= MagnetometerFault ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= GyroFault ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= AccelFault ? 1 : 0; deviceFaults <<= 1; + + return commonFaults | (deviceFaults << 30); + } + /** + * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + void Update(uint64_t bits) { + uint64_t mask = 1; + HardwareFault = (bits & mask) ? true : false; mask <<= 1; + APIError = (bits & mask) ? true : false; mask <<= 1; + UnderVoltage = (bits & mask) ? true : false; mask <<= 1; + ResetDuringEn = (bits & mask) ? true : false; mask <<= 1; + mask <<= 30; /* 30 faults currently unused */ + AccelFault = (bits & mask) ? true : false; mask <<= 1; + GyroFault = (bits & mask) ? true : false; mask <<= 1; + MagnetometerFault = (bits & mask) ? true : false; mask <<= 1; + BootIntoMotion = (bits & mask) ? true : false; mask <<= 1; + mask <<= 1; + mask <<= 1; + mask <<= 1; /* unused bit field */ + SaturatedMag = (bits & mask) ? true : false; mask <<= 1; + SaturatedAccel = (bits & mask) ? true : false; mask <<= 1; + SaturatedRotVelocity = (bits & mask) ? true : false; mask <<= 1; + } + /** + * Creates fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + Pigeon2_Faults(uint64_t bits) { + Update(bits); + } + Pigeon2_Faults() { + Update(0); // Default everything to false + } +}; + +} // sensors +} // phoenix +} // ctre diff --git a/include/ctre/phoenix/sensors/Pigeon2_StickyFaults.h b/include/ctre/phoenix/sensors/Pigeon2_StickyFaults.h new file mode 100644 index 0000000..02ff46c --- /dev/null +++ b/include/ctre/phoenix/sensors/Pigeon2_StickyFaults.h @@ -0,0 +1,148 @@ +#pragma once + +#include + +namespace ctre { +namespace phoenix { +namespace sensors { + +/** + * Sticky faults available to Pigeon + */ +struct Pigeon2_StickyFaults { + /** + * Device detects hardware failure + */ + bool HardwareFault; + /** + * API error detected. Make sure API and firmware versions are compatible. + */ + bool APIError; + /** + * Device is under 6.5V + */ + bool UnderVoltage; + /** + * Device was powered-on or reset while robot is enabled. + * Check your breakers and wiring. + */ + bool ResetDuringEn; + /** + * The device rotated at a rate that exceeded its maximum. + * Increase the range or slow the rate of rotation. + */ + bool SaturatedRotVelocity; + /** + * The device saw an acceleration that exceeded its maximum. + * Increase the range or avoid high-g events. + */ + bool SaturatedAccel; + /** + * The device saw a magnetic field that exceeded its maximum. + * Keep the device far from strong magnetic fields. + */ + bool SaturatedMag; + /** + * The Pigeon saw motion as soon as it booted, and didn't + * attempt to self-test its features. + * This isn't an issue, but to prevent this don't turn the + * robot on while moving it. + */ + bool BootIntoMotion; + /** + * The magnetometer failed its self-test. + * This is likely due to hardware damage, oftentimes from + * exposing the Pigeon to a very large magnetic field. + */ + bool MagnetometerFault; + /** + * The gyro failed its self-test. + * This is likely due to hardware damage. + */ + bool GyroFault; + /** + * The Accelerometer failed its self-test. + * This is likely due to hardware damage, oftentimes from + * exposing the Pigeon to a very large impact. + */ + bool AccelFault; + + /** + * @return true if any faults are tripped + */ + bool HasAnyFault() const { + return HardwareFault | + APIError | + UnderVoltage | + ResetDuringEn | + SaturatedRotVelocity | + SaturatedAccel | + SaturatedMag | + BootIntoMotion | + MagnetometerFault | + GyroFault | + AccelFault; + } + /** + * @return Current fault list as a bit field + */ + uint64_t ToBitfield() const { + uint64_t commonFaults = 0; + commonFaults |= HardwareFault ? 1 : 0; commonFaults <<= 1; + commonFaults |= APIError ? 1 : 0; commonFaults <<= 1; + commonFaults |= UnderVoltage ? 1 : 0; commonFaults <<= 1; + commonFaults |= ResetDuringEn ? 1 : 0; commonFaults <<= 1; + + uint64_t deviceFaults = 0; + deviceFaults |= SaturatedRotVelocity ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= SaturatedAccel ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= SaturatedMag ? 1 : 0; deviceFaults <<= 1; + deviceFaults <<= 1; /* Unused bitfield */ + deviceFaults <<= 1; + deviceFaults <<= 1; + deviceFaults |= BootIntoMotion ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= MagnetometerFault ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= GyroFault ? 1 : 0; deviceFaults <<= 1; + deviceFaults |= AccelFault ? 1 : 0; deviceFaults <<= 1; + + return commonFaults | (deviceFaults << 30); + } + /** + * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + void Update(uint64_t bits) { + uint64_t mask = 1; + HardwareFault = (bits & mask) ? true : false; mask <<= 1; + APIError = (bits & mask) ? true : false; mask <<= 1; + UnderVoltage = (bits & mask) ? true : false; mask <<= 1; + ResetDuringEn = (bits & mask) ? true : false; mask <<= 1; + mask <<= 30; /* 30 faults currently unused */ + AccelFault = (bits & mask) ? true : false; mask <<= 1; + GyroFault = (bits & mask) ? true : false; mask <<= 1; + MagnetometerFault = (bits & mask) ? true : false; mask <<= 1; + BootIntoMotion = (bits & mask) ? true : false; mask <<= 1; + mask <<= 1; + mask <<= 1; + mask <<= 1; /* unused bit field */ + SaturatedMag = (bits & mask) ? true : false; mask <<= 1; + SaturatedAccel = (bits & mask) ? true : false; mask <<= 1; + SaturatedRotVelocity = (bits & mask) ? true : false; mask <<= 1; + } + /** + * Creates fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + Pigeon2_StickyFaults(uint64_t bits) { + Update(bits); + } + Pigeon2_StickyFaults() { + Update(0); // Default everything to false + } +}; + +} // sensors +} // phoenix +} // ctre diff --git a/include/ctre/phoenix/sensors/PigeonIMU.h b/include/ctre/phoenix/sensors/PigeonIMU.h index 9cc0779..363ff4e 100644 --- a/include/ctre/phoenix/sensors/PigeonIMU.h +++ b/include/ctre/phoenix/sensors/PigeonIMU.h @@ -24,14 +24,7 @@ #pragma once #include -#include "ctre/phoenix/CANBusAddressable.h" -#include "ctre/phoenix/CustomParamConfiguration.h" -#include "ctre/phoenix/paramEnum.h" -#include "ctre/phoenix/ErrorCode.h" -#include "ctre/phoenix/sensors/PigeonIMU_ControlFrame.h" -#include "ctre/phoenix/sensors/PigeonIMU_Faults.h" -#include "ctre/phoenix/sensors/PigeonIMU_StatusFrame.h" -#include "ctre/phoenix/sensors/PigeonIMU_StickyFaults.h" +#include "ctre/phoenix/sensors/BasePigeon.h" /* forward prototype */ namespace ctre { @@ -52,7 +45,7 @@ namespace sensors { /** * Configurables available to Pigeon */ -struct PigeonIMUConfiguration : CustomParamConfiguration{ +struct PigeonIMUConfiguration : public BasePigeonConfiguration{ PigeonIMUConfiguration() {} /** @@ -68,7 +61,7 @@ struct PigeonIMUConfiguration : CustomParamConfiguration{ * @return String representation of configs */ std::string toString(std::string prependString) { - std::string retstr = CustomParamConfiguration::toString(prependString); + std::string retstr = BasePigeonConfiguration::toString(prependString); return retstr; } @@ -77,18 +70,10 @@ struct PigeonIMUConfiguration : CustomParamConfiguration{ /** * Util class to help with Pigeon configurations */ -struct PigeonIMUConfigUtils { +struct PigeonIMUConfigUtils : public BasePigeonConfigUtils { private: static PigeonIMUConfiguration _default; public: - /** - * Determine if specified value is different from default - * @param settings settings to compare against - * @return if specified value is different from default - * @{ - */ - static bool CustomParam0Different (const PigeonIMUConfiguration & settings) { return (!(settings.customParam0 == _default.customParam0)) || !settings.enableOptimizations; } - static bool CustomParam1Different (const PigeonIMUConfiguration & settings) { return (!(settings.customParam1 == _default.customParam1)) || !settings.enableOptimizations; } /** @} */ }; @@ -96,7 +81,7 @@ struct PigeonIMUConfigUtils { * Pigeon IMU Class. * Class supports communicating over CANbus and over ribbon-cable (CAN Talon SRX). */ -class PigeonIMU: public CANBusAddressable { +class PigeonIMU: public BasePigeon { public: /** Data object for holding fusion information. */ struct FusionStatus { @@ -261,51 +246,21 @@ class PigeonIMU: public CANBusAddressable { /** * Create a Pigeon object that communciates with Pigeon through the * Gadgeteer ribbon cable connected to a Talon on CAN Bus. + * + * [[deprecated("Pass in a TalonSRX reference instead.")]] * * @param talonSrx * Object for the TalonSRX connected via ribbon cable. */ PigeonIMU(ctre::phoenix::motorcontrol::can::TalonSRX * talonSrx); - - ~PigeonIMU(); - - /** - * Destructs all pigeon objects - */ - static void DestroyAllPigeonIMUs(); - - /** - * Sets the Yaw register to the specified value. - * - * @param angleDeg Degree of Yaw [+/- 368,640 degrees] - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - int SetYaw(double angleDeg, int timeoutMs = 0); /** - * Atomically add to the Yaw register. - * - * @param angleDeg Degrees to add to the Yaw register. - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - int AddYaw(double angleDeg, int timeoutMs = 0); - /** - * Sets the Yaw register to match the current compass value. + * Create a Pigeon object that communciates with Pigeon through the + * Gadgeteer ribbon cable connected to a Talon on CAN Bus. * - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. + * @param talonSrx + * Object for the TalonSRX connected via ribbon cable. */ - int SetYawToCompass(int timeoutMs = 0); + PigeonIMU(ctre::phoenix::motorcontrol::can::TalonSRX& talonSrx); /** * Sets the Fused Heading to the specified value. @@ -339,35 +294,6 @@ class PigeonIMU: public CANBusAddressable { * @return Error Code generated by function. 0 indicates no error. */ int SetFusedHeadingToCompass(int timeoutMs = 0); - /** - * Sets the AccumZAngle. - * - * @param angleDeg Degrees to set AccumZAngle to. - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - int SetAccumZAngle(double angleDeg, int timeoutMs = 0); - - /** - * @deprecated use setTemperatureCompensationDisable instead - * This was done to better match with the lower level API. - * NOTE: this isn't a persistant config, every boot temperature - * compensation will be enabled - * This was also done so the default value for the paramter is false instead of true. - * Enable/Disable Temp compensation. Pigeon defaults with this on at boot. - * - * @param bTempCompEnable Set to "True" to enable temperature compensation. - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - int ConfigTemperatureCompensationEnable(bool bTempCompEnable, - int timeoutMs = 0); /** * Disable/Enable Temp compensation. Pigeon has this on/False at boot. @@ -428,108 +354,12 @@ class PigeonIMU: public CANBusAddressable { * @return Error Code generated by function. 0 indicates no error. */ int GetGeneralStatus(PigeonIMU::GeneralStatus & statusToFill); - /** - * Call GetLastError() generated by this object. - * Not all functions return an error code but can - * potentially report errors. - * - * This function can be used to retrieve those error codes. - * - * @return The last ErrorCode generated. - */ - ErrorCode GetLastError(); - /** - * Get 6d Quaternion data. - * - * @param wxyz Array to fill with quaternion data w[0], x[1], y[2], z[3] - * @return The last ErrorCode generated. - */ - int Get6dQuaternion(double wxyz[4]); - /** - * Get Yaw, Pitch, and Roll data. - * - * @param ypr Array to fill with yaw[0], pitch[1], and roll[2] data. - * Yaw is within [-368,640, +368,640] degrees. - * Pitch is within [-90,+90] degrees. - * Roll is within [-90,+90] degrees. - * @return The last ErrorCode generated. - */ - int GetYawPitchRoll(double ypr[3]); - /** - * Get AccumGyro data. - * AccumGyro is the integrated gyro value on each axis. - * - * @param xyz_deg Array to fill with x[0], y[1], and z[2] AccumGyro data - * @return The last ErrorCode generated. - */ - int GetAccumGyro(double xyz_deg[3]); - /** - * Get the absolute compass heading. - * @return compass heading [0,360) degrees. - */ - double GetAbsoluteCompassHeading(); - /** - * Get the continuous compass heading. - * @return continuous compass heading [-23040, 23040) degrees. Use - * SetCompassHeading to modify the wrap-around portion. - */ - double GetCompassHeading(); - /** - * Gets the compass' measured magnetic field strength. - * @return field strength in Microteslas (uT). - */ - double GetCompassFieldStrength(); - /** - * Gets the temperature of the pigeon. - * - * @return Temperature in ('C) - */ - double GetTemp(); /** * Gets the current Pigeon state * * @return PigeonState enum */ PigeonState GetState(); - /** - * Gets the current Pigeon uptime. - * - * @return How long has Pigeon been running in whole seconds. Value caps at - * 255. - */ - uint32_t GetUpTime(); - /** - * Get Raw Magnetometer data. - * - * @param rm_xyz Array to fill with x[0], y[1], and z[2] data - * Number is equal to 0.6 microTeslas per unit. - * @return The last ErrorCode generated. - */ - int GetRawMagnetometer(int16_t rm_xyz[3]); - - /** - * Get Biased Magnetometer data. - * - * @param bm_xyz Array to fill with x[0], y[1], and z[2] data - * Number is equal to 0.6 microTeslas per unit. - * @return The last ErrorCode generated. - */ - int GetBiasedMagnetometer(int16_t bm_xyz[3]); - /** - * Get Biased Accelerometer data. - * - * @param ba_xyz Array to fill with x[0], y[1], and z[2] data. - * These are in fixed point notation Q2.14. eg. 16384 = 1G - * @return The last ErrorCode generated. - */ - int GetBiasedAccelerometer(int16_t ba_xyz[3]); - /** - * Get Raw Gyro data. - * - * @param xyz_dps Array to fill with x[0], y[1], and z[2] data in degrees per second. - * @return The last ErrorCode generated. - */ - int GetRawGyro(double xyz_dps[3]); /** * Get Accelerometer tilt angles. * @@ -550,7 +380,7 @@ class PigeonIMU: public CANBusAddressable { * * @return The fused heading in degrees. */ - double GetFusedHeading(); + double GetFusedHeading() const; /** * @return number of times Pigeon Reset */ @@ -559,15 +389,6 @@ class PigeonIMU: public CANBusAddressable { * @return Reset flags for Pigeon */ uint32_t GetResetFlags(); - /** - * @return firmware version of Pigeon - */ - uint32_t GetFirmVers(); - - /** - * @return true iff a reset has occurred since last call. - */ - bool HasResetOccurred(); /** * Gets the string representation of a PigeonState @@ -616,69 +437,6 @@ class PigeonIMU: public CANBusAddressable { * @return Value of the custom param. */ int ConfigGetCustomParam(int paramIndex, int timeoutMs = 0); - /** - * Sets a parameter. Generally this is not used. - * This can be utilized in - * - Using new features without updating API installation. - * - Errata workarounds to circumvent API implementation. - * - Allows for rapid testing / unit testing of firmware. - * - * @param param - * Parameter enumeration. - * @param value - * Value of parameter. - * @param subValue - * Subvalue for parameter. Maximum value of 255. - * @param ordinal - * Ordinal of parameter. - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - ErrorCode ConfigSetParameter(ParamEnum param, double value, - uint8_t subValue, int ordinal, int timeoutMs = 0); - /** - * Gets a parameter. Generally this is not used. - * This can be utilized in - * - Using new features without updating API installation. - * - Errata workarounds to circumvent API implementation. - * - Allows for rapid testing / unit testing of firmware. - * - * @param param - * Parameter enumeration. - * @param ordinal - * Ordinal of parameter. - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Value of parameter. - */ - double ConfigGetParameter(ctre::phoenix::ParamEnum param, int ordinal, int timeoutMs = 0); - /** - * Gets a parameter by passing an int by reference - * - * @param param - * Parameter enumeration - * @param valueToSend - * Value to send to parameter - * @param valueReceived - * Reference to integer to receive - * @param subValue - * SubValue of parameter - * @param ordinal - * Ordinal of parameter - * @param timeoutMs - * Timeout value in ms. If nonzero, function will wait for - * config success and report an error if it times out. - * If zero, no blocking or checking is performed. - * @return Error Code generated by function. 0 indicates no error. - */ - ErrorCode ConfigGetParameter(ParamEnum param, int32_t valueToSend, - int32_t & valueReceived, uint8_t & subValue, int32_t ordinal, - int32_t timeoutMs); /** * Sets the period of the given status frame. @@ -750,13 +508,6 @@ class PigeonIMU: public CANBusAddressable { */ ErrorCode ClearStickyFaults(int timeoutMs = 0); - /** - * @return Pigeon resource handle. - */ - void* GetLowLevelHandle() { - return _handle; - } - //------ All Configs ----------// /** * Configures all persistent settings. @@ -827,8 +578,6 @@ class PigeonIMU: public CANBusAddressable { ResetStats _resetStats = { 0, 0, 0, false }; /** Portion of the arbID for all status and control frames. */ - void* _handle; - uint32_t _deviceNumber; uint32_t _usageHist = 0; uint64_t _cache; uint32_t _len; diff --git a/include/ctre/phoenix/sensors/PigeonIMU_Faults.h b/include/ctre/phoenix/sensors/PigeonIMU_Faults.h index 0a86055..f4f0c78 100644 --- a/include/ctre/phoenix/sensors/PigeonIMU_Faults.h +++ b/include/ctre/phoenix/sensors/PigeonIMU_Faults.h @@ -1,39 +1,49 @@ #pragma once +#include + namespace ctre { namespace phoenix { namespace sensors { /** - * Faults available to Pigeon (Currently has none) + * Sticky faults available to Pigeon */ struct PigeonIMU_Faults { + /** * @return true if any faults are tripped */ bool HasAnyFault() const { - return false; + return false; } /** * @return Current fault list as a bit field */ - int ToBitfield() const { - int retval = 0; - return retval; + uint64_t ToBitfield() const { + return 0; } /** * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + void Update(uint64_t bits) { + (void)bits; + } + /** + * Creates fault list with specified bit field of faults * * @param bits bit field of faults to update with */ - PigeonIMU_Faults(int bits) { - (void)bits; + PigeonIMU_Faults(uint64_t bits) { + Update(bits); } PigeonIMU_Faults() { + Update(0); // Default everything to false } }; } // sensors } // phoenix } // ctre - diff --git a/include/ctre/phoenix/sensors/PigeonIMU_StickyFaults.h b/include/ctre/phoenix/sensors/PigeonIMU_StickyFaults.h index 79f53b4..f3da588 100644 --- a/include/ctre/phoenix/sensors/PigeonIMU_StickyFaults.h +++ b/include/ctre/phoenix/sensors/PigeonIMU_StickyFaults.h @@ -1,5 +1,7 @@ #pragma once +#include + namespace ctre { namespace phoenix { namespace sensors { @@ -8,28 +10,36 @@ namespace sensors { * Sticky faults available to Pigeon */ struct PigeonIMU_StickyFaults { + /** * @return true if any faults are tripped */ bool HasAnyFault() const { - return false; + return false; } /** * @return Current fault list as a bit field */ - int ToBitfield() const { - int retval = 0; - return retval; + uint64_t ToBitfield() const { + return 0; + } + /** + * Updates current fault list with specified bit field of faults + * + * @param bits bit field of faults to update with + */ + void Update(uint64_t bits) { } /** * Creates fault list with specified bit field of faults * * @param bits bit field of faults to update with */ - PigeonIMU_StickyFaults(int bits) { - (void)bits; + PigeonIMU_StickyFaults(uint64_t bits) { + Update(bits); } PigeonIMU_StickyFaults() { + Update(0); // Default everything to false } }; diff --git a/include/ctre/phoenix/string_util/string_util.h b/include/ctre/phoenix/string_util/string_util.h index a92cd24..0f44efa 100644 --- a/include/ctre/phoenix/string_util/string_util.h +++ b/include/ctre/phoenix/string_util/string_util.h @@ -1,4 +1,5 @@ #pragma once +#include "ctre/phoenix/export.h" #include #include #include @@ -7,15 +8,16 @@ namespace ctre { namespace phoenix { namespace string_util { - std::deque string_split(const std::string& input, char delimiter); - std::string toLower(const std::string& input); - int strcmp_nocase(char const* a, char const* b); - uint32_t safe_memcpy_(uint8_t* dest, const uint8_t* src, uint32_t numBytesToCopy, uint32_t capacity); - uint32_t safe_memcpy_(uint8_t* dest, const uint8_t* src, int32_t numBytesToCopy, int32_t capacity); - uint32_t safe_copyDoubles(double* dest, const double* src, int32_t numDoubles, int32_t capacityDoubles); - uint32_t safe_copyDoubles(double* dest, const std::vector& src, int32_t capacityDoubles); - uint32_t safe_strlen(const char* s, int32_t maxsize); - void safe_strcopy(std::string& dest, const char* src); + CTREXPORT std::deque string_split(const std::string& input, char delimiter); + CTREXPORT std::string toLower(const std::string& input); + CTREXPORT int strcmp_nocase(char const* a, char const* b); + CTREXPORT uint32_t safe_memcpy_(uint8_t* dest, const uint8_t* src, uint32_t numBytesToCopy, uint32_t capacity); + CTREXPORT uint32_t safe_memcpy_(uint8_t* dest, const uint8_t* src, int32_t numBytesToCopy, int32_t capacity); + CTREXPORT uint32_t safe_copyDoubles(double* dest, const double* src, int32_t numDoubles, int32_t capacityDoubles); + CTREXPORT uint32_t safe_copyDoubles(double* dest, const std::vector& src, int32_t capacityDoubles); + CTREXPORT uint32_t safe_strlen(const char* s, int32_t maxsize); + CTREXPORT void safe_strcopy(std::string& dest, const char* src); + CTREXPORT char *strtok_next(char **str_ptr, char const *delimiters); } // namespace string_util } // namespace phoenix } // namespace ctre diff --git a/include/ctre/phoenix/tasking/ButtonMonitor.h b/include/ctre/phoenix/tasking/ButtonMonitor.h deleted file mode 100644 index ff8878e..0000000 --- a/include/ctre/phoenix/tasking/ButtonMonitor.h +++ /dev/null @@ -1,49 +0,0 @@ -#pragma once - -#include "ctre/phoenix/Tasking/ILoopable.h" -#include "ctre/phoenix/Tasking/IProcessable.h" -#include - -#if defined(CTR_INCLUDE_WPILIB_CLASSES) || defined(__FRC_ROBORIO__) - -/* forward proto's */ -namespace frc { - class GenericHID; -} - -namespace ctre { -namespace phoenix { -namespace tasking { - -class ButtonMonitor: public IProcessable, public ILoopable { -public: - - class IButtonPressEventHandler { - public: - virtual ~IButtonPressEventHandler(){} - virtual void OnButtonPress(int idx, bool isDown) = 0; - }; - - ButtonMonitor(frc::GenericHID * controller, int buttonIndex, IButtonPressEventHandler * ButtonPressEventHandler); - ButtonMonitor(const ButtonMonitor & rhs); - virtual ~ButtonMonitor() { } - - /* IProcessable */ - virtual void Process(); - - /* ILoopable */ - virtual void OnStart(); - virtual void OnLoop(); - virtual bool IsDone(); - virtual void OnStop(); - -private: - frc::GenericHID * _gameCntrlr; - int _btnIdx; - IButtonPressEventHandler * _handler; - bool _isDown = false; -}; -} -} -} -#endif // CTR_INCLUDE_WPILIB_CLASSES or __FRC_ROBORIO__ diff --git a/include/ctre/phoenix/tasking/Schedulers/ConcurrentScheduler(1).h b/include/ctre/phoenix/tasking/Schedulers/ConcurrentScheduler(1).h deleted file mode 100644 index 676c8b8..0000000 --- a/include/ctre/phoenix/tasking/Schedulers/ConcurrentScheduler(1).h +++ /dev/null @@ -1,88 +0,0 @@ -#pragma once - -#include -#include "ctre/phoenix/tasking/ILoopable.h" -#include "ctre/phoenix/tasking/IProcessable.h" - -namespace ctre { -namespace phoenix { -/** tasking namespace */ -namespace tasking { -/** schedulers namespace */ -namespace schedulers { - -/** - * Scheduler that wil run its ILoopables in concurrency - */ -class ConcurrentScheduler: public ILoopable, public IProcessable { -public: - /** Should be private */ - std::vector _loops; - /** Should be private */ - std::vector _enabs; - - ConcurrentScheduler(); - virtual ~ConcurrentScheduler(); - /** - * Add ILoopable to schedule - * @param aLoop ILoopable to add to schedule - * @param enable Whether to enable ILoopable - */ - void Add(ILoopable *aLoop, bool enable = true); - /** - * Remove all ILoopables from scheduler - */ - void RemoveAll(); - /** - * Start an ILoopable - * @param toStart ILoopable to start - */ - void Start(ILoopable *toStart); - /** - * Stop an ILoopable - * @param toStop ILoopable to stop - */ - void Stop(ILoopable *toStop); - /** - * Start all ILoopables - */ - void StartAll(); - /** - * Stop all ILoopables - */ - void StopAll(); - - //IProcessable - /** - * Process every ILoopable - * - * Call this every loop - */ - void Process(); - - //ILoopable - /** - * @return false, this never iterates - */ - bool Iterated(); - /** - * Start all ILoopables - */ - void OnStart(); - /** - * Process all ILoopables - */ - void OnLoop(); - /** - * Stop all ILoopables - */ - void OnStop(); - /** - * @return false, this is never done - */ - bool IsDone(); -}; -} -} -} -} diff --git a/include/ctre/phoenix/tasking/Schedulers/SequentialScheduler(1).h b/include/ctre/phoenix/tasking/Schedulers/SequentialScheduler(1).h deleted file mode 100644 index edaa92c..0000000 --- a/include/ctre/phoenix/tasking/Schedulers/SequentialScheduler(1).h +++ /dev/null @@ -1,75 +0,0 @@ -#pragma once - -#include -#include "ctre/phoenix/tasking/ILoopable.h" -#include "ctre/phoenix/tasking/IProcessable.h" - -namespace ctre { namespace phoenix { namespace tasking { namespace schedulers { - -/** - * Scheduler that will run its ILoopables in sequence - */ -class SequentialScheduler: public ILoopable, public IProcessable{ -public: - /** should be private */ - bool _running = false; - /** should be private */ - std::vector _loops; - /** should be private */ - unsigned int _idx = 0; - /** should be private */ - bool _iterated = false; - - SequentialScheduler(); - virtual ~SequentialScheduler(); - - /** - * Add ILoopable to scheduler - * @param aLoop ILoopable to add - */ - void Add(ILoopable *aLoop); - /** - * Get the currently running ILoopable - * @return null, not implemented - */ - ILoopable * GetCurrent(); - /** - * Remove all ILoopables - */ - void RemoveAll(); - /** - * Start next ILoopable - */ - void Start(); - /** - * Stop every ILoopable - */ - void Stop(); - - //IProcessable - /** - * Process the currently active ILoopable - * - * Call this every loop - */ - void Process(); - - //ILoopable - /** - * Start next ILoopable - */ - void OnStart(); - /** - * Process currently active ILoopable - */ - void OnLoop(); - /** - * Stop all ILoopables - */ - void OnStop(); - /** - * @return true when no longer running - */ - bool IsDone(); -}; -}}}} diff --git a/include/ctre/phoenix/unmanaged/Unmanaged.h b/include/ctre/phoenix/unmanaged/Unmanaged.h index 0eaa195..9cc668e 100644 --- a/include/ctre/phoenix/unmanaged/Unmanaged.h +++ b/include/ctre/phoenix/unmanaged/Unmanaged.h @@ -1,37 +1,59 @@ #pragma once +namespace ctre { +namespace phoenix { +/** unmanaged namespace */ +namespace unmanaged { -#include +/** + * Handles enabling when used in a non-FRC manner + */ +class Unmanaged { +public: + /** + * Feed the enable frame. + * This function does nothing on a roborio during FRC use. + * + * If running an application in simulation, creating a WPI_* + * object automatically enables actuators. + * Otherwise, call this to enable actuators. + * + * @param timeoutMs Timeout before disabling + */ + static void FeedEnable(int timeoutMs); + /** + * @return true if enabled + */ + static bool GetEnableState(); + /** + * @return Phoenix version + */ + static int GetPhoenixVersion(); + /** + * Calling this function will load and start + * the Phoenix background tasks. + * + * This can be useful if you need the + * Enable/Disable functionality for CAN devices + * but aren't using any of the CAN device classes. + * + * This function does NOT need to be called if + * you are using any of the Phoenix CAN device classes. + */ + static void LoadPhoenix(); -namespace ctre { - namespace phoenix { - namespace unmanaged { - /** - * Feed the robot enable. - * This function does nothing on a roborio during FRC use. - * @param timeoutMs Timeout before disabling - */ - void FeedEnable(int timeoutMs); - /** - * @return true if enabled - */ - bool GetEnableState(); - /** - * Sets whether to enable transmitting - * This function does nothing on a roborio during FRC use. - * @param en True enables transmitting - */ - void SetTransmitEnable(bool en); - /** - * @return true if transmitting is enabled - */ - bool GetTransmitEnable(); - /** - * @return Phoenix version - */ - int GetPhoenixVersion(); - void LoadPhoenix(); + /** + * Sets the duration of the delay before starting + * the Phoenix diagnostics server. + * + * @param startTime Magnitude of the delay (in seconds) before + * starting the server. + * A value of 0 will start the server immediately. + * A negative value will signal the server + * to shutdown or never start. + */ + static void SetPhoenixDiagnosticsStartTime(int startTimeSeconds); +}; - int IoControl(uint32_t ioControlCode, uint64_t ioControlParam, char* inValue = 0, int inValueSize = 0, char* outValue = 0, int outValueSize = 0); - } - } +} +} } diff --git a/lib/jetsontx/libCTRE_Phoenix.a b/lib/jetsontx/libCTRE_Phoenix.a deleted file mode 100644 index 7bb7701767aeaed8ced1ec9150b6cc7f21bb3009..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600214 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

YN6SDRpY4t5D}OOiZa$OJ0RKr!itm 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 diff --git a/lib/jetsontx/libCTRE_Phoenix.so b/lib/jetsontx/libCTRE_Phoenix.so new file mode 100644 index 0000000000000000000000000000000000000000..963f205b45245575c79eb1c18f4c0e669cde153f GIT binary patch literal 544760 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%0Ds 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

?Ku3Jxn-2w)(k%@THGFN>||G;pkfCQ@oE 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

|+tM*actiSgqh%s}TF~pnYIp&wS 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

#g!a}7p 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%0De3FZ?(}+;{&VyH?@9CGR3T` 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 diff --git a/lib/jetsontx/libCTRE_PhoenixCCI.so b/lib/jetsontx/libCTRE_PhoenixCCI.so new file mode 100644 index 0000000000000000000000000000000000000000..8219f3b77c6787c99bb8745aab304477cb886d3f GIT binary patch literal 1374904 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 z�E79-WxG4?$gq;@<(p#zDkFGs;h{EK&w0xGq2{Q% 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