diff --git a/cmake/modules/CompileWarnings.cmake b/cmake/modules/CompileWarnings.cmake index b56c175a9b..fd4f9294ba 100644 --- a/cmake/modules/CompileWarnings.cmake +++ b/cmake/modules/CompileWarnings.cmake @@ -14,18 +14,20 @@ macro(wpilib_target_warnings target) target_compile_options(${target} PRIVATE ${WARNING_FLAGS}) else() - target_compile_options( - ${target} - PRIVATE - /wd4146 - /wd4244 - /wd4251 - /wd4267 - /wd4324 - /WX - /D_CRT_SECURE_NO_WARNINGS - ${WPILIB_TARGET_WARNINGS} + set(WARNING_FLAGS + /wd4146 + /wd4244 + /wd4251 + /wd4267 + /wd4324 + /D_CRT_SECURE_NO_WARNINGS + ${WPILIB_TARGET_WARNINGS} ) + if(NOT NO_WERROR) + set(WARNING_FLAGS ${WARNING_FLAGS} /WX) + endif() + + target_compile_options(${target} PRIVATE ${WARNING_FLAGS}) endif() # Suppress C++-specific OpenCV warning; C compiler rejects it with an error diff --git a/wpilibc/src/generated/main/native/cpp/motorcontrol/Koors40.cpp b/wpilibc/src/generated/main/native/cpp/motorcontrol/Koors40.cpp new file mode 100644 index 0000000000..023e51a404 --- /dev/null +++ b/wpilibc/src/generated/main/native/cpp/motorcontrol/Koors40.cpp @@ -0,0 +1,20 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +// THIS FILE WAS AUTO-GENERATED BY ./wpilibc/generate_pwm_motor_controllers.py. DO NOT MODIFY + +#include "frc/motorcontrol/Koors40.h" + +#include + +using namespace frc; + +Koors40::Koors40(int channel) : PWMMotorController("Koors40", channel) { + m_pwm.SetBounds(2.004_ms, 1.52_ms, 1.5_ms, 1.48_ms, 0.997_ms); + m_pwm.SetPeriodMultiplier(PWM::kPeriodMultiplier_4X); + m_pwm.SetSpeed(0.0); + m_pwm.SetZeroLatch(); + + HAL_Report(HALUsageReporting::kResourceType_Koors40, GetChannel() + 1); +} diff --git a/wpilibc/src/generated/main/native/include/frc/motorcontrol/Koors40.h b/wpilibc/src/generated/main/native/include/frc/motorcontrol/Koors40.h new file mode 100644 index 0000000000..7beb7366c3 --- /dev/null +++ b/wpilibc/src/generated/main/native/include/frc/motorcontrol/Koors40.h @@ -0,0 +1,43 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +// THIS FILE WAS AUTO-GENERATED BY ./wpilibc/generate_pwm_motor_controllers.py. DO NOT MODIFY + +#pragma once + +#include "frc/motorcontrol/PWMMotorController.h" + +namespace frc { + +/** + * AndyMark Koors40 Motor Controller with PWM control. + * + * Note that the Koors40 uses the following bounds for PWM values. These + * values should work reasonably well for most controllers, but if users + * experience issues such as asymmetric behavior around the deadband or + * inability to saturate the controller in either direction, calibration is + * recommended. The calibration procedure can be found in the Koors40 User + * Manual available from AndyMark. + * + * \li 2.004ms = full "forward" + * \li 1.520ms = the "high end" of the deadband range + * \li 1.500ms = center of the deadband range (off) + * \li 1.480ms = the "low end" of the deadband range + * \li 0.997ms = full "reverse" + */ +class Koors40 : public PWMMotorController { + public: + /** + * Constructor for a Koors40 connected via PWM. + * + * @param channel The PWM channel that the Koors40 is attached to. 0-9 are + * on-board, 10-19 are on the MXP port + */ + explicit Koors40(int channel); + + Koors40(Koors40&&) = default; + Koors40& operator=(Koors40&&) = default; +}; + +} // namespace frc diff --git a/wpilibj/src/generate/pwm_motor_controllers.json b/wpilibj/src/generate/pwm_motor_controllers.json index c319b97fa0..f03141c881 100644 --- a/wpilibj/src/generate/pwm_motor_controllers.json +++ b/wpilibj/src/generate/pwm_motor_controllers.json @@ -169,6 +169,20 @@ "min": 0.997 } }, + { + "name": "Koors40", + "Manufacturer": "AndyMark", + "DisplayName": "Koors40", + "ResourceName": "Koors40", + "PeriodMultiplier": 4, + "pulse_width_ms": { + "max": 2.004, + "deadbandMax": 1.520, + "center": 1.500, + "deadbandMin": 1.480, + "min": 0.997 + } + }, { "name": "SparkMini", "Manufacturer": "REV Robotics", diff --git a/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/motorcontrol/Koors40.java b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/motorcontrol/Koors40.java new file mode 100644 index 0000000000..df1ef2d754 --- /dev/null +++ b/wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/motorcontrol/Koors40.java @@ -0,0 +1,48 @@ +// Copyright (c) FIRST and other WPILib contributors. +// Open Source Software; you can modify and/or share it under the terms of +// the WPILib BSD license file in the root directory of this project. + +// THIS FILE WAS AUTO-GENERATED BY ./wpilibj/generate_pwm_motor_controllers.py. DO NOT MODIFY + +package edu.wpi.first.wpilibj.motorcontrol; + +import edu.wpi.first.hal.FRCNetComm.tResourceType; +import edu.wpi.first.hal.HAL; +import edu.wpi.first.wpilibj.PWM; + +/** + * AndyMark Koors40 Motor Controller. + * + *

Note that the Koors40 uses the following bounds for PWM values. These values should work + * reasonably well for most controllers, but if users experience issues such as asymmetric behavior + * around the deadband or inability to saturate the controller in either direction, calibration is + * recommended. The calibration procedure can be found in the Koors40 User Manual available from + * AndyMark. + * + *

+ */ +public class Koors40 extends PWMMotorController { + /** + * Constructor. + * + * @param channel The PWM channel that the Koors40 is attached to. 0-9 are on-board, 10-19 + * are on the MXP port + */ + @SuppressWarnings("this-escape") + public Koors40(final int channel) { + super("Koors40", channel); + + m_pwm.setBoundsMicroseconds(2004, 1520, 1500, 1480, 997); + m_pwm.setPeriodMultiplier(PWM.PeriodMultiplier.k4X); + m_pwm.setSpeed(0.0); + m_pwm.setZeroLatch(); + + HAL.report(tResourceType.kResourceType_Koors40, getChannel() + 1); + } +}