From 934bf7bf054a4c111914789398e3dc94467e3486 Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Thu, 26 Dec 2024 22:33:20 -0500 Subject: [PATCH 1/3] [build] CMake: Make NO_WERROR also work on MSVC (#7594) --- cmake/modules/CompileWarnings.cmake | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 From 9e63dcfb161122dc901f652ba919fe404c0c03d4 Mon Sep 17 00:00:00 2001 From: Tyler Veness Date: Thu, 26 Dec 2024 19:59:48 -0800 Subject: [PATCH 2/3] [ci] Install wpiformat into venv (#7596) --- .github/workflows/lint-format.yml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/.github/workflows/lint-format.yml b/.github/workflows/lint-format.yml index d787d9c729..3929d9cd40 100644 --- a/.github/workflows/lint-format.yml +++ b/.github/workflows/lint-format.yml @@ -34,9 +34,11 @@ jobs: with: python-version: '3.12' - name: Install wpiformat - run: pip3 install wpiformat==2024.51 + run: | + python -m venv ${{ runner.temp }}/wpiformat + ${{ runner.temp }}/wpiformat/bin/pip3 install wpiformat==2024.51 - name: Run - run: wpiformat + run: ${{ runner.temp }}/wpiformat/bin/wpiformat - name: Check output run: git --no-pager diff --exit-code HEAD - name: Generate diff @@ -74,18 +76,20 @@ jobs: with: python-version: '3.12' - name: Install wpiformat - run: pip3 install wpiformat==2024.51 + run: | + python -m venv ${{ runner.temp }}/wpiformat + ${{ runner.temp }}/wpiformat/bin/pip3 install wpiformat==2024.51 - name: Create compile_commands.json run: | ./gradlew generateCompileCommands -Ptoolchain-optional-roboRio ./.github/workflows/fix_compile_commands.py build/TargetedCompileCommands/linuxx86-64release/compile_commands.json ./.github/workflows/fix_compile_commands.py build/TargetedCompileCommands/linuxx86-64debug/compile_commands.json - name: List changed files - run: wpiformat -list-changed-files + run: ${{ runner.temp }}/wpiformat/bin/wpiformat -list-changed-files - name: Run clang-tidy release - run: wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64release -vv + run: ${{ runner.temp }}/wpiformat/bin/wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64release -vv - name: Run clang-tidy debug - run: wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64debug -vv + run: ${{ runner.temp }}/wpiformat/bin/wpiformat -no-format -tidy-changed -compile-commands=build/TargetedCompileCommands/linuxx86-64debug -vv javaformat: name: "Java format" runs-on: ubuntu-22.04 From 46d401553ec9233b5a2daea0351f4988cbaf78e4 Mon Sep 17 00:00:00 2001 From: sciencewhiz Date: Fri, 27 Dec 2024 13:04:43 -0800 Subject: [PATCH 3/3] [wpilib] Add Koors40 motor controller (#7469) --- .../main/native/cpp/motorcontrol/Koors40.cpp | 20 ++++++++ .../native/include/frc/motorcontrol/Koors40.h | 43 +++++++++++++++++ .../src/generate/pwm_motor_controllers.json | 14 ++++++ .../first/wpilibj/motorcontrol/Koors40.java | 48 +++++++++++++++++++ 4 files changed, 125 insertions(+) create mode 100644 wpilibc/src/generated/main/native/cpp/motorcontrol/Koors40.cpp create mode 100644 wpilibc/src/generated/main/native/include/frc/motorcontrol/Koors40.h create mode 100644 wpilibj/src/generated/main/java/edu/wpi/first/wpilibj/motorcontrol/Koors40.java 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 a2c9feab0c..c04935fba1 100644 --- a/wpilibj/src/generate/pwm_motor_controllers.json +++ b/wpilibj/src/generate/pwm_motor_controllers.json @@ -168,5 +168,19 @@ "deadbandMin": 1.480, "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 + } } ] 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. + * + *

    + *
  • 2.004ms = full "forward" + *
  • 1.520ms = the "high end" of the deadband range + *
  • 1.500ms = center of the deadband range (off) + *
  • 1.480ms = the "low end" of the deadband range + *
  • 0.997ms = full "reverse" + *
+ */ +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); + } +}