From f8c997475d99a9a032a09458f31bb16fe389f47e Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 18 Aug 2024 00:10:44 -0400 Subject: [PATCH 01/30] Updated dependencies - lib updated to 2025.0.0-alpha-1-154-gb12b83a - repo updated to https://frcmaven.wpi.edu/artifactory/development --- rdev.toml | 6 +++--- subprojects/pyntcore/pyproject.toml | 4 ++-- subprojects/robotpy-apriltag/pyproject.toml | 4 ++-- subprojects/robotpy-cscore/pyproject.toml | 8 ++++---- subprojects/robotpy-hal/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-gui/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-ws/pyproject.toml | 8 ++++---- subprojects/robotpy-romi/pyproject.toml | 4 ++-- subprojects/robotpy-wpilib/pyproject.toml | 4 ++-- subprojects/robotpy-wpimath/pyproject.toml | 4 ++-- subprojects/robotpy-wpinet/pyproject.toml | 4 ++-- subprojects/robotpy-wpiutil/pyproject.toml | 4 ++-- subprojects/robotpy-xrp/pyproject.toml | 8 ++++---- 14 files changed, 35 insertions(+), 35 deletions(-) diff --git a/rdev.toml b/rdev.toml index 695b881e..04ff17c1 100644 --- a/rdev.toml +++ b/rdev.toml @@ -4,9 +4,9 @@ [params] -wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" -wpilib_bin_version = "2024.3.2" -# wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" +# wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" +wpilib_bin_version = "2025.0.0-alpha-1-154-gb12b83a" +wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" # Don't update these artifacts exclude_artifacts = [ diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index c8ce73a9..f44fb92f 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -23,8 +23,8 @@ base_package = "ntcore" [tool.robotpy-build.wrappers."ntcore".maven_lib_download] artifact_id = "ntcore-cpp" group_id = "edu.wpi.first.ntcore" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["ntcore"] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 59e9208d..142e96c9 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -23,8 +23,8 @@ base_package = "robotpy_apriltag" [tool.robotpy-build.wrappers."robotpy_apriltag".maven_lib_download] artifact_id = "apriltag-cpp" group_id = "edu.wpi.first.apriltag" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["apriltag"] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 74c14c3c..0d77a3b5 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -26,16 +26,16 @@ base_package = "cscore" [tool.robotpy-build.static_libs."cscore_cpp".maven_lib_download] artifact_id = "cscore-cpp" group_id = "edu.wpi.first.cscore" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["cscore"] [tool.robotpy-build.static_libs."cameraserver_cpp".maven_lib_download] artifact_id = "cameraserver-cpp" group_id = "edu.wpi.first.cameraserver" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["cameraserver"] diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index 87a5d60b..3b29c4bb 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -23,8 +23,8 @@ base_package = "hal" artifact_id = "hal-cpp" group_id = "edu.wpi.first.hal" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["wpiHal"] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index b4b6c6a0..098788b9 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -27,8 +27,8 @@ base_package = "halsim_ds_socket" artifact_id = "halsim_ds_socket" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" dlopenlibs = ["halsim_ds_socket"] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index 5cc87435..b516daea 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -29,8 +29,8 @@ base_package = "halsim_gui" artifact_id = "halsim_gui" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" dlopenlibs = ["halsim_gui"] diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index ccb4c239..75ca7dda 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -31,8 +31,8 @@ base_package = "halsim_ws" artifact_id = "halsim_ws_server" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" dlopenlibs = ["halsim_ws_server"] @@ -44,8 +44,8 @@ depends = ["wpiHal", "wpinet"] artifact_id = "halsim_ws_client" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" dlopenlibs = ["halsim_ws_client"] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index 538d32b2..3d69af8e 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -38,6 +38,6 @@ RomiMotor = "frc/romi/RomiMotor.h" artifact_id = "romiVendordep-cpp" group_id = "edu.wpi.first.romiVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["romiVendordep"] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index 98e4756f..aea1cf37 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -31,8 +31,8 @@ base_package = "wpilib" [tool.robotpy-build.wrappers."wpilib._impl".maven_lib_download] artifact_id = "wpilibc-cpp" group_id = "edu.wpi.first.wpilibc" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["wpilibc"] diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 78b01600..8d7f32d8 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -22,8 +22,8 @@ base_package = "wpimath" [tool.robotpy-build.wrappers."wpimath._impl".maven_lib_download] artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["wpimath"] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 6972d367..1b73deaf 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -14,8 +14,8 @@ generation_data = "gen" artifact_id = "wpinet-cpp" group_id = "edu.wpi.first.wpinet" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["wpinet"] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index 4b26c10b..ee1c50b8 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -33,9 +33,9 @@ generation_data = "gen" [tool.robotpy-build.wrappers."wpiutil".maven_lib_download] artifact_id = "wpiutil-cpp" group_id = "edu.wpi.first.wpiutil" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" # repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2024.3.2" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["wpiutil"] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index 6fec9a2c..455665e9 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -47,16 +47,16 @@ XRPServo = "frc/xrp/XRPServo.h" artifact_id = "xrpVendordep-cpp" group_id = "edu.wpi.first.xrpVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" libs = ["xrpVendordep"] [tool.robotpy-build.wrappers."xrp.extension".maven_lib_download] artifact_id = "halsim_xrp" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" -repo_url = "https://frcmaven.wpi.edu/artifactory/release" -version = "2024.3.2" +repo_url = "https://frcmaven.wpi.edu/artifactory/development" +version = "2025.0.0-alpha-1-154-gb12b83a" dlopenlibs = ["halsim_xrp"] From c55d4a53881498fae9fda7adc9f4dc3283cb4e05 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 18 Aug 2024 01:34:40 -0400 Subject: [PATCH 02/30] WPIUtil updates - Struct getTypeString -> getTypeName - DataLog refactor --- subprojects/robotpy-wpiutil/gen/DataLog.yml | 137 ++++++++++++++++-- .../gen/DataLogBackgroundWriter.yml | 18 +++ .../robotpy-wpiutil/gen/DataLogWriter.yml | 30 ++++ subprojects/robotpy-wpiutil/gen/WPyStruct.yml | 2 +- subprojects/robotpy-wpiutil/pyproject.toml | 2 + .../tests/cpp/wpiutil_test/struct_test.cpp | 4 +- .../robotpy-wpiutil/tests/test_struct.py | 8 +- .../robotpy-wpiutil/wpiutil/log/__init__.py | 4 + .../wpiutil/src/wpistruct/wpystruct.h | 16 +- .../wpiutil/src/wpistruct/wpystruct_fns.cpp | 4 +- .../wpiutil/src/wpistruct/wpystruct_fns.h | 4 +- .../wpiutil/wpistruct/__init__.py | 4 +- .../wpiutil/wpistruct/dataclass.py | 4 +- .../robotpy-wpiutil/wpiutil/wpistruct/desc.py | 4 +- 14 files changed, 206 insertions(+), 35 deletions(-) create mode 100644 subprojects/robotpy-wpiutil/gen/DataLogBackgroundWriter.yml create mode 100644 subprojects/robotpy-wpiutil/gen/DataLogWriter.yml diff --git a/subprojects/robotpy-wpiutil/gen/DataLog.yml b/subprojects/robotpy-wpiutil/gen/DataLog.yml index 96b772e7..85789bee 100644 --- a/subprojects/robotpy-wpiutil/gen/DataLog.yml +++ b/subprojects/robotpy-wpiutil/gen/DataLog.yml @@ -7,16 +7,15 @@ enums: classes: DataLog: subpackage: log + attributes: + kBlockSize: + s_defaultMessageLog: + ignore: true + m_msglog: + ignore: true methods: DataLog: - overloads: - std::string_view, std::string_view, double, std::string_view: - wpi::Logger&, std::string_view, std::string_view, double, std::string_view: - ignore: true - std::function data)>, double, std::string_view: - wpi::Logger&, std::function data)>, double, std::string_view: - ignore: true - SetFilename: + ignore: true Flush: Pause: Resume: @@ -63,8 +62,15 @@ classes: int, std::span, int64_t: ignore: true int, std::span, int64_t: - int, std::span, int64_t: + int, std::span, int64_t: ignore: true + StartFile: + FlushBufs: + ignore: true + ReleaseBufs: + ignore: true + BufferHalfFull: + BufferFull: DataLogEntry: subpackage: log force_no_trampoline: true @@ -76,6 +82,23 @@ classes: "": ignore: true DataLog&, std::string_view, std::string_view, std::string_view, int64_t: + DataLogValueEntryImpl: + template_params: + - T + force_no_trampoline: true + attributes: + m_mutex: + ignore: true + m_lastValue: + ignore: true + methods: + HasLastValue: + GetLastValue: + DataLogValueEntryImpl: + overloads: + "": + ignore: true + DataLog&, std::string_view, std::string_view, std::string_view, int64_t: RawLogEntry: subpackage: log force_no_trampoline: true @@ -90,6 +113,7 @@ classes: DataLog&, std::string_view, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, std::string_view, int64_t: Append: + Update: BooleanLogEntry: subpackage: log force_no_trampoline: true @@ -103,6 +127,7 @@ classes: DataLog&, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, int64_t: Append: + Update: IntegerLogEntry: subpackage: log force_no_trampoline: true @@ -116,6 +141,7 @@ classes: DataLog&, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, int64_t: Append: + Update: FloatLogEntry: subpackage: log force_no_trampoline: true @@ -129,6 +155,7 @@ classes: DataLog&, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, int64_t: Append: + Update: DoubleLogEntry: subpackage: log force_no_trampoline: true @@ -142,6 +169,7 @@ classes: DataLog&, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, int64_t: Append: + Update: StringLogEntry: subpackage: log force_no_trampoline: true @@ -156,6 +184,7 @@ classes: DataLog&, std::string_view, std::string_view, int64_t: DataLog&, std::string_view, std::string_view, std::string_view, int64_t: Append: + Update: BooleanArrayLogEntry: subpackage: log force_no_trampoline: true @@ -179,6 +208,16 @@ classes: ignore: true std::span, int64_t: ignore: true + Update: + overloads: + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true + std::span, int64_t: + ignore: true IntegerArrayLogEntry: subpackage: log force_no_trampoline: true @@ -196,6 +235,11 @@ classes: std::span, int64_t: std::initializer_list, int64_t: ignore: true + Update: + overloads: + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true FloatArrayLogEntry: subpackage: log force_no_trampoline: true @@ -213,6 +257,11 @@ classes: std::span, int64_t: std::initializer_list, int64_t: ignore: true + Update: + overloads: + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true DoubleArrayLogEntry: subpackage: log force_no_trampoline: true @@ -230,6 +279,11 @@ classes: std::span, int64_t: std::initializer_list, int64_t: ignore: true + Update: + overloads: + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true StringArrayLogEntry: subpackage: log force_no_trampoline: true @@ -249,6 +303,13 @@ classes: std::span, int64_t: std::initializer_list, int64_t: ignore: true + Update: + overloads: + std::span, int64_t: + ignore: true + std::span, int64_t: + std::initializer_list, int64_t: + ignore: true StructLogEntry: force_no_trampoline: true template_params: @@ -335,4 +396,60 @@ templates: subpackage: log params: - WPyStruct - - WPyStructInfo \ No newline at end of file + - WPyStructInfo + + _RawLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector + _BooleanLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - bool + _IntegerLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - int64_t + _FloatLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - float + _DoubleLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - double + _StringLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::string + _BooleanArrayLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector + _IntegerArrayLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector + _FloatArrayLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector + _DoubleArrayLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector + _StringArrayLogEntryImpl: + qualname: wpi::log::DataLogValueEntryImpl + subpackage: log + params: + - std::vector \ No newline at end of file diff --git a/subprojects/robotpy-wpiutil/gen/DataLogBackgroundWriter.yml b/subprojects/robotpy-wpiutil/gen/DataLogBackgroundWriter.yml new file mode 100644 index 00000000..fbb78b25 --- /dev/null +++ b/subprojects/robotpy-wpiutil/gen/DataLogBackgroundWriter.yml @@ -0,0 +1,18 @@ +--- + +classes: + DataLogBackgroundWriter: + methods: + DataLogBackgroundWriter: + overloads: + std::string_view, std::string_view, double, std::string_view: + wpi::Logger&, std::string_view, std::string_view, double, std::string_view: + ignore: true + std::function data)>, double, std::string_view: + wpi::Logger&, std::function data)>, double, std::string_view: + ignore: true + SetFilename: + Flush: + Pause: + Resume: + Stop: diff --git a/subprojects/robotpy-wpiutil/gen/DataLogWriter.yml b/subprojects/robotpy-wpiutil/gen/DataLogWriter.yml new file mode 100644 index 00000000..72a99a01 --- /dev/null +++ b/subprojects/robotpy-wpiutil/gen/DataLogWriter.yml @@ -0,0 +1,30 @@ +--- + +classes: + DataLogWriter: + methods: + DataLogWriter: + overloads: + std::string_view, std::error_code&, std::string_view: + cpp_code: | + [](std::string_view filename, std::string_view extraHeader) { + std::error_code ec; + auto writer = std::make_unique(filename, ec, extraHeader); + if (ec) { + throw std::system_error(ec); + } + return writer; + } + param_override: + ec: + ignore: true + wpi::Logger&, std::string_view, std::error_code&, std::string_view: + ignore: true + std::unique_ptr, std::string_view: + ignore: true + wpi::Logger&, std::unique_ptr, std::string_view: + ignore: true + Flush: + Stop: + GetStream: + ignore: true diff --git a/subprojects/robotpy-wpiutil/gen/WPyStruct.yml b/subprojects/robotpy-wpiutil/gen/WPyStruct.yml index f41affcf..981f4563 100644 --- a/subprojects/robotpy-wpiutil/gen/WPyStruct.yml +++ b/subprojects/robotpy-wpiutil/gen/WPyStruct.yml @@ -2,7 +2,7 @@ functions: forEachNested: subpackage: wpistruct no_release_gil: true - getTypeString: + getTypeName: subpackage: wpistruct no_release_gil: true getSchema: diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index ee1c50b8..e26661a0 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -43,6 +43,8 @@ libs = ["wpiutil"] # wpi DataLog = "wpi/DataLog.h" DataLogReader = "wpi/DataLogReader.h" +DataLogBackgroundWriter = "wpi/DataLogBackgroundWriter.h" +DataLogWriter = "wpi/DataLogWriter.h" StackTrace = "wpi/StackTrace.h" Synchronization = "wpi/Synchronization.h" diff --git a/subprojects/robotpy-wpiutil/tests/cpp/wpiutil_test/struct_test.cpp b/subprojects/robotpy-wpiutil/tests/cpp/wpiutil_test/struct_test.cpp index d8ffe68b..200822e9 100644 --- a/subprojects/robotpy-wpiutil/tests/cpp/wpiutil_test/struct_test.cpp +++ b/subprojects/robotpy-wpiutil/tests/cpp/wpiutil_test/struct_test.cpp @@ -16,7 +16,7 @@ struct ThingA { }; template <> struct wpi::Struct { - static constexpr std::string_view GetTypeString() { return "struct:ThingA"; } + static constexpr std::string_view GetTypeName() { return "ThingA"; } static constexpr size_t GetSize() { return 1; } static constexpr std::string_view GetSchema() { return "uint8 value"; } static ThingA Unpack(std::span data) { @@ -41,7 +41,7 @@ struct Outer { template <> struct wpi::Struct { - static constexpr std::string_view GetTypeString() { return "struct:Outer"; } + static constexpr std::string_view GetTypeName() { return "Outer"; } static constexpr size_t GetSize() { return wpi::GetStructSize() + 4; } static constexpr std::string_view GetSchema() { return "ThingA inner; int32 c"; diff --git a/subprojects/robotpy-wpiutil/tests/test_struct.py b/subprojects/robotpy-wpiutil/tests/test_struct.py index 0ae62ae5..bef5c9a0 100644 --- a/subprojects/robotpy-wpiutil/tests/test_struct.py +++ b/subprojects/robotpy-wpiutil/tests/test_struct.py @@ -31,7 +31,7 @@ def _fn(*args): def test_get_type_string(): - assert wpistruct.getTypeString(module.ThingA) == "struct:ThingA" + assert wpistruct.getTypeName(module.ThingA) == "ThingA" def test_get_schema(): @@ -89,7 +89,7 @@ def _fn(*args): def test_nested_get_type_string(): - assert wpistruct.getTypeString(module.ThingA) == "struct:ThingA" + assert wpistruct.getTypeName(module.ThingA) == "ThingA" def test_nested_get_schema(): @@ -140,7 +140,7 @@ def _fn(*args): def test_user_get_type_string(): - assert wpistruct.getTypeString(MyStruct) == "struct:mystruct" + assert wpistruct.getTypeName(MyStruct) == "mystruct" def test_user_get_schema(): @@ -202,7 +202,7 @@ def _fn(*args): def test_user_nested_get_type_string(): - assert wpistruct.getTypeString(Outer) == "struct:Outer" + assert wpistruct.getTypeName(Outer) == "Outer" def test_user_nested_get_schema(): diff --git a/subprojects/robotpy-wpiutil/wpiutil/log/__init__.py b/subprojects/robotpy-wpiutil/wpiutil/log/__init__.py index d8b90355..da36f1d8 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/log/__init__.py +++ b/subprojects/robotpy-wpiutil/wpiutil/log/__init__.py @@ -17,6 +17,8 @@ StartRecordData, StringArrayLogEntry, StringLogEntry, + StructArrayLogEntry, + StructLogEntry, ) __all__ = [ @@ -37,4 +39,6 @@ "StartRecordData", "StringArrayLogEntry", "StringLogEntry", + "StructArrayLogEntry", + "StructLogEntry", ] diff --git a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct.h b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct.h index d547ad8f..9305d003 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct.h +++ b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct.h @@ -81,7 +81,7 @@ template <> struct type_caster { // two types of converters: static C++ converter, and dynamic python converter struct WPyStructConverter { virtual ~WPyStructConverter() = default; - virtual std::string_view GetTypeString() const = 0; + virtual std::string_view GetTypeName() const = 0; virtual size_t GetSize() const = 0; @@ -101,8 +101,8 @@ struct WPyStructConverter { // static C++ converter template struct WPyStructCppConverter : WPyStructConverter { - std::string_view GetTypeString() const override { - return wpi::Struct::GetTypeString(); + std::string_view GetTypeName() const override { + return wpi::Struct::GetTypeName(); } size_t GetSize() const override { return wpi::Struct::GetSize(); } @@ -155,7 +155,7 @@ template void SetupWPyStruct(auto pycls) { struct WPyStructPyConverter : WPyStructConverter { WPyStructPyConverter(py::object o) { - m_typestring = o.attr("typeString").cast(); + m_typename = o.attr("typename").cast(); m_schema = o.attr("schema").cast(); m_size = o.attr("size").cast(); @@ -168,7 +168,7 @@ struct WPyStructPyConverter : WPyStructConverter { } // copy all the relevant attributes locally - std::string m_typestring; + std::string m_typename; std::string m_schema; size_t m_size; @@ -178,7 +178,7 @@ struct WPyStructPyConverter : WPyStructConverter { // py::function m_unpackInto; py::function m_forEachNested; // might be none - std::string_view GetTypeString() const override { return m_typestring; } + std::string_view GetTypeName() const override { return m_typename; } size_t GetSize() const override { return m_size; } @@ -275,8 +275,8 @@ struct WPyStructInfo { // Leverages the converter stored in WPyStructInfo to do the actual work template <> struct wpi::Struct { - static std::string_view GetTypeString(const WPyStructInfo &info) { - return info->GetTypeString(); + static std::string_view GetTypeName(const WPyStructInfo &info) { + return info->GetTypeName(); } static size_t GetSize(const WPyStructInfo &info) { diff --git a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.cpp b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.cpp index 95c719ee..fcb18a30 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.cpp +++ b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.cpp @@ -8,9 +8,9 @@ void forEachNested( wpi::ForEachStructSchema(fn, info); } -py::str getTypeString(const py::type &t) { +py::str getTypeName(const py::type &t) { WPyStructInfo info(t); - return wpi::GetStructTypeString(info); + return wpi::GetStructTypeName(info); } py::str getSchema(const py::type &t) { diff --git a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.h b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.h index bddbeb9a..a2e19949 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.h +++ b/subprojects/robotpy-wpiutil/wpiutil/src/wpistruct/wpystruct_fns.h @@ -11,9 +11,9 @@ void forEachNested( const std::function &fn); /** - Retrieve the type string for the specified type + Retrieve the type name for the specified type */ -py::str getTypeString(const py::type &t); +py::str getTypeName(const py::type &t); /** Retrieve schema for the specified type diff --git a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/__init__.py b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/__init__.py index 9fa1b487..d8a480e1 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/__init__.py +++ b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/__init__.py @@ -8,7 +8,7 @@ forEachNested, getSchema, getSize, - getTypeString, + getTypeName, pack, packInto, unpack, @@ -18,7 +18,7 @@ "forEachNested", "getSchema", "getSize", - "getTypeString", + "getTypeName", "pack", "packInto", "unpack", diff --git a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/dataclass.py b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/dataclass.py index 0c8b3baf..160db3e7 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/dataclass.py +++ b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/dataclass.py @@ -133,7 +133,7 @@ def _process_class(cls, struct_name: typing.Optional[str]): typn = f"type_{name}" ctx[typn] = ftype - ts = wpistruct.getTypeString(ftype).split(":", 1)[1].strip() + ts = wpistruct.getTypeName(ftype) schema.append(f"{ts} {name}") sz = wpistruct.getSize(ftype) fmts.append(f"{sz}s") @@ -216,7 +216,7 @@ def _unpack(b): exec(fnsrc, ctx, ctx) cls.WPIStruct = StructDescriptor( - typeString=f"struct:{struct_name}", + typename=struct_name, schema="; ".join(schema), size=s.size, pack=ctx["_pack"], diff --git a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/desc.py b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/desc.py index fce77d47..e75a3a55 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/wpistruct/desc.py +++ b/subprojects/robotpy-wpiutil/wpiutil/wpistruct/desc.py @@ -20,8 +20,8 @@ class StructDescriptor(typing.NamedTuple): for defining custom structs using a dataclass. """ - #: The type string - typeString: str + #: The type name + typename: str #: The struct schema schema: str From 47c7ba1179b76c4aec1d966bdc53dc6be80f8107 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 18 Aug 2024 02:00:19 -0400 Subject: [PATCH 03/30] Update robotpy-hal - WPI_String migration --- subprojects/robotpy-hal/gen/DriverStation.yml | 12 ++++--- subprojects/robotpy-hal/gen/HALBase.yml | 22 +++++++++++++ subprojects/robotpy-hal/gen/REVPH.yml | 3 ++ .../gen/simulation/DriverStationData.yml | 15 +++++++++ .../gen/simulation/RoboRioData.yml | 32 +++++++++++++++++++ .../gen/simulation/SPIAccelerometerData.yml | 4 +-- 6 files changed, 81 insertions(+), 7 deletions(-) diff --git a/subprojects/robotpy-hal/gen/DriverStation.yml b/subprojects/robotpy-hal/gen/DriverStation.yml index 9e9db3ba..2d0980bb 100644 --- a/subprojects/robotpy-hal/gen/DriverStation.yml +++ b/subprojects/robotpy-hal/gen/DriverStation.yml @@ -18,15 +18,17 @@ functions: HAL_GetJoystickIsXbox: HAL_GetJoystickType: HAL_GetJoystickName: + param_override: + name: + ignore: true cpp_code: | [](int32_t joystickNum) { - auto name = HAL_GetJoystickName(joystickNum); - std::string sname(name); - HAL_FreeJoystickName(name); + WPI_String name; + HAL_GetJoystickName(&name, joystickNum); + std::string sname(wpi::to_string_view(&name)); + WPI_FreeString(&name); return sname; } - HAL_FreeJoystickName: - ignore: true HAL_GetJoystickAxisType: HAL_SetJoystickOutputs: HAL_GetMatchTime: diff --git a/subprojects/robotpy-hal/gen/HALBase.yml b/subprojects/robotpy-hal/gen/HALBase.yml index 357c59da..eaef4fb0 100644 --- a/subprojects/robotpy-hal/gen/HALBase.yml +++ b/subprojects/robotpy-hal/gen/HALBase.yml @@ -10,7 +10,29 @@ functions: HAL_GetFPGAVersion: HAL_GetFPGARevision: HAL_GetSerialNumber: + param_override: + serialNumber: + ignore: true + cpp_code: | + []() { + WPI_String s; + HAL_GetSerialNumber(&s); + std::string ss(wpi::to_string_view(&s)); + WPI_FreeString(&s); + return ss; + } HAL_GetComments: + param_override: + comments: + ignore: true + cpp_code: | + []() { + WPI_String s; + HAL_GetComments(&s); + std::string ss(wpi::to_string_view(&s)); + WPI_FreeString(&s); + return ss; + } HAL_GetTeamNumber: HAL_GetRuntimeType: HAL_GetFPGAButton: diff --git a/subprojects/robotpy-hal/gen/REVPH.yml b/subprojects/robotpy-hal/gen/REVPH.yml index 2491f41e..866c7480 100644 --- a/subprojects/robotpy-hal/gen/REVPH.yml +++ b/subprojects/robotpy-hal/gen/REVPH.yml @@ -30,6 +30,7 @@ functions: HAL_GetREVPHFaults: HAL_GetREVPHStickyFaults: HAL_ClearREVPHStickyFaults: + HAL_GetREVPHSolenoidDisabledList: classes: HAL_REVPHVersion: shared_ptr: true @@ -82,3 +83,5 @@ classes: canWarning: canBusOff: hasReset: + hardwareFault: + firmwareFault: diff --git a/subprojects/robotpy-hal/gen/simulation/DriverStationData.yml b/subprojects/robotpy-hal/gen/simulation/DriverStationData.yml index 452d1533..8e4964d5 100644 --- a/subprojects/robotpy-hal/gen/simulation/DriverStationData.yml +++ b/subprojects/robotpy-hal/gen/simulation/DriverStationData.yml @@ -87,9 +87,24 @@ functions: HALSIM_SetJoystickIsXbox: HALSIM_SetJoystickType: HALSIM_SetJoystickName: + cpp_code: | + [](int32_t stick, std::string_view sv) { + auto s = wpi::make_string(sv); + HALSIM_SetJoystickName(stick, &s); + } HALSIM_SetJoystickAxisType: HALSIM_SetGameSpecificMessage: + cpp_code: | + [](std::string_view sv) { + auto s = wpi::make_string(sv); + HALSIM_SetGameSpecificMessage(&s); + } HALSIM_SetEventName: + cpp_code: | + [](std::string_view sv) { + auto s = wpi::make_string(sv); + HALSIM_SetEventName(&s); + } HALSIM_SetMatchType: HALSIM_SetMatchNumber: HALSIM_SetReplayNumber: diff --git a/subprojects/robotpy-hal/gen/simulation/RoboRioData.yml b/subprojects/robotpy-hal/gen/simulation/RoboRioData.yml index 6a9b795d..f89de89f 100644 --- a/subprojects/robotpy-hal/gen/simulation/RoboRioData.yml +++ b/subprojects/robotpy-hal/gen/simulation/RoboRioData.yml @@ -94,12 +94,44 @@ functions: ignore: true HALSIM_CancelRoboRioSerialNumberCallback: HALSIM_GetRoboRioSerialNumber: + param_override: + serialNumber: + ignore: true + cpp_code: | + []() { + WPI_String s; + HALSIM_GetRoboRioSerialNumber(&s); + std::string ss(wpi::to_string_view(&s)); + WPI_FreeString(&s); + return ss; + } HALSIM_SetRoboRioSerialNumber: + cpp_code: | + [](std::string_view sv) { + auto s = wpi::make_string(sv); + HALSIM_SetRoboRioSerialNumber(&s); + } HALSIM_RegisterRoboRioCommentsCallback: ignore: true HALSIM_CancelRoboRioCommentsCallback: HALSIM_GetRoboRioComments: + param_override: + comments: + ignore: true + cpp_code: | + []() { + WPI_String s; + HALSIM_GetRoboRioComments(&s); + std::string ss(wpi::to_string_view(&s)); + WPI_FreeString(&s); + return ss; + } HALSIM_SetRoboRioComments: + cpp_code: | + [](std::string_view sv) { + auto s = wpi::make_string(sv); + HALSIM_SetRoboRioComments(&s); + } HALSIM_RegisterRoboRioAllCallbacks: ignore: true HALSIM_RegisterRoboRioCPUTempCallback: diff --git a/subprojects/robotpy-hal/gen/simulation/SPIAccelerometerData.yml b/subprojects/robotpy-hal/gen/simulation/SPIAccelerometerData.yml index 28c1a210..00381b52 100644 --- a/subprojects/robotpy-hal/gen/simulation/SPIAccelerometerData.yml +++ b/subprojects/robotpy-hal/gen/simulation/SPIAccelerometerData.yml @@ -30,5 +30,5 @@ functions: HALSIM_CancelSPIAccelerometerZCallback: HALSIM_GetSPIAccelerometerZ: HALSIM_SetSPIAccelerometerZ: - HALSIM_RegisterSPIAccelerometerAllCallbcaks: - ignore: true + HALSIM_RegisterSPIAccelerometerAllCallbacks: + ignore: true \ No newline at end of file From 3055a163c14f2f4090f7070d23978e87bdf6991f Mon Sep 17 00:00:00 2001 From: Spicuzza Date: Tue, 20 Aug 2024 23:42:18 -0400 Subject: [PATCH 04/30] Update wpimath for 2025 --- rdev_requirements.txt | 1 + subprojects/robotpy-wpimath/gen/MathUtil.yml | 6 +++ .../gen/controls/ArmFeedforward.yml | 9 ++-- .../controls/DifferentialDriveFeedforward.yml | 5 ++ .../gen/controls/ElevatorFeedforward.yml | 9 ++-- .../gen/controls/LinearSystem.yml | 3 ++ .../gen/controls/PIDController.yml | 1 + .../gen/controls/PoseEstimator.yml | 21 ++++---- .../gen/controls/ProfiledPIDController.yml | 1 + .../gen/controls/SimpleMotorFeedforward.yml | 12 +++-- .../gen/geometry/Ellipse2d.yml | 48 +++++++++++++++++++ .../gen/geometry/Rectangle2d.yml | 47 ++++++++++++++++++ .../gen/geometry/Translation2d.yml | 2 + .../gen/geometry/Translation3d.yml | 1 + .../gen/kinematics/ChassisSpeeds.yml | 2 + .../DifferentialDriveKinematics.yml | 1 + .../gen/kinematics/Kinematics.yml | 18 +++---- .../gen/kinematics/MecanumDriveKinematics.yml | 1 + .../gen/kinematics/Odometry.yml | 20 ++++---- .../gen/kinematics/SwerveDriveKinematics.yml | 6 ++- .../kinematics/SwerveDriveWheelPositions.yml | 47 ------------------ subprojects/robotpy-wpimath/pyproject.toml | 4 +- .../robotpy-wpimath/wpimath/__init__.py | 18 ++++++- .../wpimath/geometry/__init__.py | 4 ++ .../geometry/include/rpy/geometryToString.h | 14 ++++++ .../wpimath/kinematics/__init__.py | 4 -- 26 files changed, 206 insertions(+), 99 deletions(-) create mode 100644 subprojects/robotpy-wpimath/gen/geometry/Ellipse2d.yml create mode 100644 subprojects/robotpy-wpimath/gen/geometry/Rectangle2d.yml delete mode 100644 subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveWheelPositions.yml diff --git a/rdev_requirements.txt b/rdev_requirements.txt index 6c4ac757..40ae7acd 100644 --- a/rdev_requirements.txt +++ b/rdev_requirements.txt @@ -2,6 +2,7 @@ black click packaging pydantic<2 +pytest requests setuptools setuptools_scm >= 6.2, < 8 diff --git a/subprojects/robotpy-wpimath/gen/MathUtil.yml b/subprojects/robotpy-wpimath/gen/MathUtil.yml index b4846673..cd33aaca 100644 --- a/subprojects/robotpy-wpimath/gen/MathUtil.yml +++ b/subprojects/robotpy-wpimath/gen/MathUtil.yml @@ -5,6 +5,12 @@ functions: template_impls: - [double] AngleModulus: + FloorDiv: + template_impls: + - [int64_t, int64_t] + FloorMod: + template_impls: + - [int64_t, int64_t] ApplyDeadband: param_override: maxMagnitude: diff --git a/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml index d55f091a..ce2821fd 100644 --- a/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml @@ -10,11 +10,6 @@ classes: - frc::ArmFeedforward::Acceleration - frc::ArmFeedforward::kv_unit - frc::ArmFeedforward::ka_unit - attributes: - kS: - kG: - kV: - kA: methods: ArmFeedforward: overloads: @@ -25,6 +20,10 @@ classes: MinAchievableVelocity: MaxAchievableAcceleration: MinAchievableAcceleration: + GetKs: + GetKg: + GetKv: + GetKa: extra_includes: - wpystruct.h diff --git a/subprojects/robotpy-wpimath/gen/controls/DifferentialDriveFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/DifferentialDriveFeedforward.yml index 208d6b38..40a57c00 100644 --- a/subprojects/robotpy-wpimath/gen/controls/DifferentialDriveFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/DifferentialDriveFeedforward.yml @@ -8,6 +8,11 @@ classes: - units::radians_per_second - units::radians_per_second_squared - units::compound_unit + attributes: + m_kVLinear: + m_kALinear: + m_kVAngular: + m_kAAngular: methods: DifferentialDriveFeedforward: overloads: diff --git a/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml index 3f4084e9..67349598 100644 --- a/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml @@ -6,11 +6,6 @@ classes: - units::meters_per_second - meters_per_second_squared subpackage: controller - attributes: - kS: - kG: - kV: - kA: methods: ElevatorFeedforward: overloads: @@ -21,6 +16,10 @@ classes: MinAchievableVelocity: MaxAchievableAcceleration: MinAchievableAcceleration: + GetKs: + GetKg: + GetKv: + GetKa: extra_includes: - wpystruct.h diff --git a/subprojects/robotpy-wpimath/gen/controls/LinearSystem.yml b/subprojects/robotpy-wpimath/gen/controls/LinearSystem.yml index 001c584a..50133b63 100644 --- a/subprojects/robotpy-wpimath/gen/controls/LinearSystem.yml +++ b/subprojects/robotpy-wpimath/gen/controls/LinearSystem.yml @@ -27,6 +27,9 @@ classes: int, int [const]: CalculateX: CalculateY: + Slice: + # TODO? + ignore: true templates: LinearSystem_1_1_1: diff --git a/subprojects/robotpy-wpimath/gen/controls/PIDController.yml b/subprojects/robotpy-wpimath/gen/controls/PIDController.yml index 14c54699..376ca4b1 100644 --- a/subprojects/robotpy-wpimath/gen/controls/PIDController.yml +++ b/subprojects/robotpy-wpimath/gen/controls/PIDController.yml @@ -22,6 +22,7 @@ classes: GetPeriod: GetPositionTolerance: GetVelocityTolerance: + GetAccumulatedError: SetSetpoint: GetSetpoint: AtSetpoint: diff --git a/subprojects/robotpy-wpimath/gen/controls/PoseEstimator.yml b/subprojects/robotpy-wpimath/gen/controls/PoseEstimator.yml index 85741cb5..d1adda6e 100644 --- a/subprojects/robotpy-wpimath/gen/controls/PoseEstimator.yml +++ b/subprojects/robotpy-wpimath/gen/controls/PoseEstimator.yml @@ -6,7 +6,6 @@ extra_includes: - frc/kinematics/MecanumDriveWheelPositions.h - frc/kinematics/MecanumDriveWheelSpeeds.h - frc/kinematics/SwerveDriveKinematics.h -- frc/kinematics/SwerveDriveWheelPositions.h classes: @@ -18,7 +17,11 @@ classes: PoseEstimator: SetVisionMeasurementStdDevs: ResetPosition: + ResetPose: + ResetTranslation: + ResetRotation: GetEstimatedPosition: + SampleAt: AddVisionMeasurement: overloads: const Pose2d&, units::second_t: @@ -43,23 +46,23 @@ templates: qualname: frc::PoseEstimator subpackage: estimator params: - - frc::SwerveDriveWheelSpeeds<2> - - frc::SwerveDriveWheelPositions<2> + - wpi::array + - wpi::array SwerveDrive3PoseEstimatorBase: qualname: frc::PoseEstimator subpackage: estimator params: - - frc::SwerveDriveWheelSpeeds<3> - - frc::SwerveDriveWheelPositions<3> + - wpi::array + - wpi::array SwerveDrive4PoseEstimatorBase: qualname: frc::PoseEstimator subpackage: estimator params: - - frc::SwerveDriveWheelSpeeds<4> - - frc::SwerveDriveWheelPositions<4> + - wpi::array + - wpi::array SwerveDrive6PoseEstimatorBase: qualname: frc::PoseEstimator subpackage: estimator params: - - frc::SwerveDriveWheelSpeeds<6> - - frc::SwerveDriveWheelPositions<6> + - wpi::array + - wpi::array diff --git a/subprojects/robotpy-wpimath/gen/controls/ProfiledPIDController.yml b/subprojects/robotpy-wpimath/gen/controls/ProfiledPIDController.yml index 79470ab1..2eb14552 100644 --- a/subprojects/robotpy-wpimath/gen/controls/ProfiledPIDController.yml +++ b/subprojects/robotpy-wpimath/gen/controls/ProfiledPIDController.yml @@ -35,6 +35,7 @@ classes: GetPeriod: GetPositionTolerance: GetVelocityTolerance: + GetAccumulatedError: SetGoal: overloads: State: diff --git a/subprojects/robotpy-wpimath/gen/controls/SimpleMotorFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/SimpleMotorFeedforward.yml index 6adbb0c9..cc6498d2 100644 --- a/subprojects/robotpy-wpimath/gen/controls/SimpleMotorFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/SimpleMotorFeedforward.yml @@ -18,10 +18,6 @@ classes: - typename frc::SimpleMotorFeedforward::ka_unit template_params: - Distance - attributes: - kS: - kV: - kA: methods: SimpleMotorFeedforward: overloads: @@ -30,11 +26,17 @@ classes: Calculate: overloads: units::unit_t, units::unit_t [const]: - units::unit_t, units::unit_t, units::second_t [const]: + ignore: true + units::unit_t [const]: + units::unit_t, units::unit_t [const]: MaxAchievableVelocity: MinAchievableVelocity: MaxAchievableAcceleration: MinAchievableAcceleration: + GetKs: + GetKv: + GetKa: + GetDt: templates: # Unfortunately this is broken because calculate requires an SI unit diff --git a/subprojects/robotpy-wpimath/gen/geometry/Ellipse2d.yml b/subprojects/robotpy-wpimath/gen/geometry/Ellipse2d.yml new file mode 100644 index 00000000..c417c1bc --- /dev/null +++ b/subprojects/robotpy-wpimath/gen/geometry/Ellipse2d.yml @@ -0,0 +1,48 @@ +--- + +extra_includes: + - rpy/geometryToString.h + - wpystruct.h + +classes: + Ellipse2d: + force_type_casters: + - units::foot_t + - units::meter_t + methods: + Ellipse2d: + overloads: + const Pose2d&, units::meter_t, units::meter_t [constexpr]: + const Translation2d&, double [constexpr]: + Center: + Rotation: + XSemiAxis: + ignore: true + YSemiAxis: + ignore: true + FocalPoints: + TransformBy: + RotateBy: + Intersects: + Contains: + Distance: + FindNearestPoint: + operator==: + +inline_code: | + cls_Ellipse2d + .def_static("fromFeet", [](const Pose2d& center, units::foot_t xSemiAxis, units::foot_t ySemiAxis) { + return std::make_unique(center, xSemiAxis, ySemiAxis); + }, py::arg("center"), py::arg("xSemiAxis"), py::arg("ySemiAxis")) + .def_property_readonly("xsemiaxis", &Ellipse2d::XSemiAxis) + .def_property_readonly("ysemiaxis", &Ellipse2d::YSemiAxis) + .def_property_readonly("xsemiaxis_feet", [](Ellipse2d &self) -> units::foot_t { + return self.XSemiAxis(); + }) + .def_property_readonly("ysemiaxis_feet", [](Ellipse2d &self) -> units::foot_t { + return self.YSemiAxis(); + }) + .def("__repr__", py::overload_cast(&rpy::toString)); + + + SetupWPyStruct(cls_Ellipse2d); \ No newline at end of file diff --git a/subprojects/robotpy-wpimath/gen/geometry/Rectangle2d.yml b/subprojects/robotpy-wpimath/gen/geometry/Rectangle2d.yml new file mode 100644 index 00000000..56bc9f93 --- /dev/null +++ b/subprojects/robotpy-wpimath/gen/geometry/Rectangle2d.yml @@ -0,0 +1,47 @@ +--- + +extra_includes: + - rpy/geometryToString.h + - wpystruct.h + +classes: + Rectangle2d: + force_type_casters: + - units::foot_t + - units::meter_t + methods: + Rectangle2d: + overloads: + const Pose2d&, units::meter_t, units::meter_t [constexpr]: + const Translation2d&, const Translation2d& [constexpr]: + Center: + Rotation: + XWidth: + ignore: true + YWidth: + ignore: true + TransformBy: + RotateBy: + Intersects: + Contains: + Distance: + FindNearestPoint: + operator==: + +inline_code: | + cls_Rectangle2d + .def_static("fromFeet", [](const Pose2d& center, units::foot_t xWidth, units::foot_t yWidth) { + return std::make_unique(center, xWidth, yWidth); + }, py::arg("center"), py::arg("xWidth"), py::arg("yWidth")) + .def_property_readonly("xwidth", &Rectangle2d::XWidth) + .def_property_readonly("ywidth", &Rectangle2d::YWidth) + .def_property_readonly("xwidth_feet", [](Rectangle2d &self) -> units::foot_t { + return self.XWidth(); + }) + .def_property_readonly("ywidth_feet", [](Rectangle2d &self) -> units::foot_t { + return self.YWidth(); + }) + .def("__repr__", py::overload_cast(&rpy::toString)); + + + SetupWPyStruct(cls_Rectangle2d); \ No newline at end of file diff --git a/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml b/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml index a91998db..c664454b 100644 --- a/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml +++ b/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml @@ -22,9 +22,11 @@ classes: Distance: X: Y: + ToVector: Norm: Angle: RotateBy: + RotateAround: Nearest: overloads: std::span [const]: diff --git a/subprojects/robotpy-wpimath/gen/geometry/Translation3d.yml b/subprojects/robotpy-wpimath/gen/geometry/Translation3d.yml index 5ef0d393..a60d7179 100644 --- a/subprojects/robotpy-wpimath/gen/geometry/Translation3d.yml +++ b/subprojects/robotpy-wpimath/gen/geometry/Translation3d.yml @@ -23,6 +23,7 @@ classes: X: Y: Z: + ToVector: Norm: RotateBy: ToTranslation2d: diff --git a/subprojects/robotpy-wpimath/gen/kinematics/ChassisSpeeds.yml b/subprojects/robotpy-wpimath/gen/kinematics/ChassisSpeeds.yml index 7978aeca..d2f6c739 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/ChassisSpeeds.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/ChassisSpeeds.yml @@ -12,6 +12,7 @@ classes: vy: omega: methods: + ToTwist2d: Discretize: overloads: units::meters_per_second_t, units::meters_per_second_t, units::radians_per_second_t, units::second_t: @@ -31,6 +32,7 @@ classes: '[const]': operator*: operator/: + operator==: inline_code: | cls_ChassisSpeeds diff --git a/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml index 36d43e91..9dd4a702 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml @@ -12,6 +12,7 @@ classes: ToChassisSpeeds: ToWheelSpeeds: ToTwist2d: + Interpolate: inline_code: | SetupWPyStruct(cls_DifferentialDriveKinematics); diff --git a/subprojects/robotpy-wpimath/gen/kinematics/Kinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/Kinematics.yml index 03adb28f..fd0e5326 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/Kinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/Kinematics.yml @@ -6,7 +6,6 @@ extra_includes: - frc/kinematics/MecanumDriveWheelPositions.h - frc/kinematics/MecanumDriveWheelSpeeds.h - frc/kinematics/SwerveDriveKinematics.h -- frc/kinematics/SwerveDriveWheelPositions.h classes: @@ -20,6 +19,7 @@ classes: ToChassisSpeeds: ToWheelSpeeds: ToTwist2d: + Interpolate: templates: @@ -36,20 +36,20 @@ templates: SwerveDrive2KinematicsBase: qualname: frc::Kinematics params: - - frc::SwerveDriveWheelSpeeds<2> - - frc::SwerveDriveWheelPositions<2> + - wpi::array + - wpi::array SwerveDrive3KinematicsBase: qualname: frc::Kinematics params: - - frc::SwerveDriveWheelSpeeds<3> - - frc::SwerveDriveWheelPositions<3> + - wpi::array + - wpi::array SwerveDrive4KinematicsBase: qualname: frc::Kinematics params: - - frc::SwerveDriveWheelSpeeds<4> - - frc::SwerveDriveWheelPositions<4> + - wpi::array + - wpi::array SwerveDrive6KinematicsBase: qualname: frc::Kinematics params: - - frc::SwerveDriveWheelSpeeds<6> - - frc::SwerveDriveWheelPositions<6> + - wpi::array + - wpi::array diff --git a/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml index 30ea322d..50b4b4f5 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml @@ -40,6 +40,7 @@ classes: GetFrontRight: GetRearLeft: GetRearRight: + Interpolate: inline_code: | SetupWPyStruct(cls_MecanumDriveKinematics); diff --git a/subprojects/robotpy-wpimath/gen/kinematics/Odometry.yml b/subprojects/robotpy-wpimath/gen/kinematics/Odometry.yml index a37e84cf..c2ea93c2 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/Odometry.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/Odometry.yml @@ -6,7 +6,6 @@ extra_includes: - frc/kinematics/MecanumDriveWheelPositions.h - frc/kinematics/MecanumDriveWheelSpeeds.h - frc/kinematics/SwerveDriveKinematics.h -- frc/kinematics/SwerveDriveWheelPositions.h classes: Odometry: @@ -16,6 +15,9 @@ classes: methods: Odometry: ResetPosition: + ResetPose: + ResetTranslation: + ResetRotation: GetPose: Update: @@ -33,20 +35,20 @@ templates: SwerveDrive2OdometryBase: qualname: frc::Odometry params: - - frc::SwerveDriveWheelSpeeds<2> - - frc::SwerveDriveWheelPositions<2> + - wpi::array + - wpi::array SwerveDrive3OdometryBase: qualname: frc::Odometry params: - - frc::SwerveDriveWheelSpeeds<3> - - frc::SwerveDriveWheelPositions<3> + - wpi::array + - wpi::array SwerveDrive4OdometryBase: qualname: frc::Odometry params: - - frc::SwerveDriveWheelSpeeds<4> - - frc::SwerveDriveWheelPositions<4> + - wpi::array + - wpi::array SwerveDrive6OdometryBase: qualname: frc::Odometry params: - - frc::SwerveDriveWheelSpeeds<6> - - frc::SwerveDriveWheelPositions<6> + - wpi::array + - wpi::array diff --git a/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveKinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveKinematics.yml index fec1c3f7..5002b3d9 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveKinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveKinematics.yml @@ -58,8 +58,7 @@ classes: ModuleDeltas&&... [const]: ignore: true wpi::array [const]: - const SwerveDriveWheelPositions&, const SwerveDriveWheelPositions& [const]: - ignore: true + const wpi::array&, const wpi::array& [const]: DesaturateWheelSpeeds: overloads: wpi::array*, units::meters_per_second_t: @@ -81,6 +80,9 @@ classes: return moduleStates; } + Interpolate: + GetModules: + template_inline_code: | if constexpr (NumModules == 2) { cls_SwerveDriveKinematics.def(py::init()); diff --git a/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveWheelPositions.yml b/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveWheelPositions.yml deleted file mode 100644 index 2de56c85..00000000 --- a/subprojects/robotpy-wpimath/gen/kinematics/SwerveDriveWheelPositions.yml +++ /dev/null @@ -1,47 +0,0 @@ ---- - -classes: - SwerveDriveWheelPositions: - template_params: - - size_t NumModules - force_type_casters: - - wpi::array - force_no_default_constructor: true - attributes: - positions: - methods: - operator==: - cpp_code: | - "__eq__", [](frc::SwerveDriveWheelPositions &self, frc::SwerveDriveWheelPositions &other) { - return self == other; - }, py::is_operator() - operator!=: - cpp_code: | - "__ne__", [](frc::SwerveDriveWheelPositions &self, frc::SwerveDriveWheelPositions &other) { - return self != other; - }, py::is_operator() - Interpolate: - - template_inline_code: | - cls_SwerveDriveWheelPositions - .def(py::init>(), - py::arg("positions") - ); - -templates: - SwerveDrive2WheelPositions: - qualname: frc::SwerveDriveWheelPositions - params: - - 2 - SwerveDrive3WheelPositions: - qualname: frc::SwerveDriveWheelPositions - params: - - 3 - SwerveDrive4WheelPositions: - qualname: frc::SwerveDriveWheelPositions - params: - - 4 - SwerveDrive6WheelPositions: - qualname: frc::SwerveDriveWheelPositions - params: - - 6 diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 8d7f32d8..e05131e8 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -1495,9 +1495,11 @@ generation_data = "gen/geometry" # frc/geometry CoordinateAxis = "frc/geometry/CoordinateAxis.h" CoordinateSystem = "frc/geometry/CoordinateSystem.h" +Ellipse2d = "frc/geometry/Ellipse2d.h" Pose2d = "frc/geometry/Pose2d.h" Pose3d = "frc/geometry/Pose3d.h" Quaternion = "frc/geometry/Quaternion.h" +Rectangle2d = "frc/geometry/Rectangle2d.h" Rotation2d = "frc/geometry/Rotation2d.h" Rotation3d = "frc/geometry/Rotation3d.h" Transform2d = "frc/geometry/Transform2d.h" @@ -1542,10 +1544,8 @@ MecanumDriveWheelSpeeds = "frc/kinematics/MecanumDriveWheelSpeeds.h" Odometry = "frc/kinematics/Odometry.h" SwerveDriveKinematics = "frc/kinematics/SwerveDriveKinematics.h" SwerveDriveOdometry = "frc/kinematics/SwerveDriveOdometry.h" -SwerveDriveWheelPositions = "frc/kinematics/SwerveDriveWheelPositions.h" SwerveModulePosition = "frc/kinematics/SwerveModulePosition.h" SwerveModuleState = "frc/kinematics/SwerveModuleState.h" -WheelPositions = "frc/kinematics/WheelPositions.h" [tool.robotpy-build.wrappers."wpimath.spline"] diff --git a/subprojects/robotpy-wpimath/wpimath/__init__.py b/subprojects/robotpy-wpimath/wpimath/__init__.py index c1364eed..75378bb1 100644 --- a/subprojects/robotpy-wpimath/wpimath/__init__.py +++ b/subprojects/robotpy-wpimath/wpimath/__init__.py @@ -1,6 +1,20 @@ from . import _init_wpimath # noqa: F401 # autogenerated by 'robotpy-build create-imports wpimath' -from ._wpimath import angleModulus, applyDeadband, inputModulus, objectToRobotPose +from ._wpimath import ( + angleModulus, + applyDeadband, + floorDiv, + floorMod, + inputModulus, + objectToRobotPose, +) -__all__ = ["angleModulus", "applyDeadband", "inputModulus", "objectToRobotPose"] +__all__ = [ + "angleModulus", + "applyDeadband", + "floorDiv", + "floorMod", + "inputModulus", + "objectToRobotPose", +] diff --git a/subprojects/robotpy-wpimath/wpimath/geometry/__init__.py b/subprojects/robotpy-wpimath/wpimath/geometry/__init__.py index 93e6a473..02cfc474 100644 --- a/subprojects/robotpy-wpimath/wpimath/geometry/__init__.py +++ b/subprojects/robotpy-wpimath/wpimath/geometry/__init__.py @@ -4,9 +4,11 @@ from ._geometry import ( CoordinateAxis, CoordinateSystem, + Ellipse2d, Pose2d, Pose3d, Quaternion, + Rectangle2d, Rotation2d, Rotation3d, Transform2d, @@ -20,9 +22,11 @@ __all__ = [ "CoordinateAxis", "CoordinateSystem", + "Ellipse2d", "Pose2d", "Pose3d", "Quaternion", + "Rectangle2d", "Rotation2d", "Rotation3d", "Transform2d", diff --git a/subprojects/robotpy-wpimath/wpimath/geometry/include/rpy/geometryToString.h b/subprojects/robotpy-wpimath/wpimath/geometry/include/rpy/geometryToString.h index 803e582b..4ba07ad5 100644 --- a/subprojects/robotpy-wpimath/wpimath/geometry/include/rpy/geometryToString.h +++ b/subprojects/robotpy-wpimath/wpimath/geometry/include/rpy/geometryToString.h @@ -1,7 +1,9 @@ #include +#include #include #include +#include #include #include #include @@ -81,5 +83,17 @@ inline std::string toString(const frc::Pose3d &self) { rpy::toString(self.Rotation()) + ")"; } +inline std::string toString(const frc::Rectangle2d &self) { + return "Rectangle2d(center=" + rpy::toString(self.Center()) + + ", xWidth=" + std::to_string(self.XWidth()()) + + ", yWidth=" + std::to_string(self.YWidth()()) + ")"; +} + +inline std::string toString(const frc::Ellipse2d &self) { + return "Ellipse2d(center=" + rpy::toString(self.Center()) + + ", xSemiAxis=" + std::to_string(self.XSemiAxis()()) + + ", ySemiAxis=" + std::to_string(self.YSemiAxis()()) + ")"; +} + } // namespace rpy diff --git a/subprojects/robotpy-wpimath/wpimath/kinematics/__init__.py b/subprojects/robotpy-wpimath/wpimath/kinematics/__init__.py index 780cab8b..6092835c 100644 --- a/subprojects/robotpy-wpimath/wpimath/kinematics/__init__.py +++ b/subprojects/robotpy-wpimath/wpimath/kinematics/__init__.py @@ -19,22 +19,18 @@ SwerveDrive2KinematicsBase, SwerveDrive2Odometry, SwerveDrive2OdometryBase, - SwerveDrive2WheelPositions, SwerveDrive3Kinematics, SwerveDrive3KinematicsBase, SwerveDrive3Odometry, SwerveDrive3OdometryBase, - SwerveDrive3WheelPositions, SwerveDrive4Kinematics, SwerveDrive4KinematicsBase, SwerveDrive4Odometry, SwerveDrive4OdometryBase, - SwerveDrive4WheelPositions, SwerveDrive6Kinematics, SwerveDrive6KinematicsBase, SwerveDrive6Odometry, SwerveDrive6OdometryBase, - SwerveDrive6WheelPositions, SwerveModulePosition, SwerveModuleState, ) From c6a5dae9b4b0f125733e74561f94bf592a06f41c Mon Sep 17 00:00:00 2001 From: Spicuzza Date: Tue, 20 Aug 2024 23:45:26 -0400 Subject: [PATCH 05/30] Update robotpy-apriltag --- subprojects/robotpy-apriltag/gen/AprilTagFieldLayout.yml | 3 +++ subprojects/robotpy-apriltag/robotpy_apriltag/__init__.py | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/subprojects/robotpy-apriltag/gen/AprilTagFieldLayout.yml b/subprojects/robotpy-apriltag/gen/AprilTagFieldLayout.yml index e5b07943..0ab67cd6 100644 --- a/subprojects/robotpy-apriltag/gen/AprilTagFieldLayout.yml +++ b/subprojects/robotpy-apriltag/gen/AprilTagFieldLayout.yml @@ -5,6 +5,8 @@ functions: ignore: true from_json: ignore: true + LoadAprilTagLayoutField: + ignore: true classes: AprilTagFieldLayout: enums: @@ -15,6 +17,7 @@ classes: "": std::string_view: std::vector, units::meter_t, units::meter_t: + LoadField: GetFieldLength: GetFieldWidth: GetTags: diff --git a/subprojects/robotpy-apriltag/robotpy_apriltag/__init__.py b/subprojects/robotpy-apriltag/robotpy_apriltag/__init__.py index a37b1590..f40314d4 100644 --- a/subprojects/robotpy-apriltag/robotpy_apriltag/__init__.py +++ b/subprojects/robotpy-apriltag/robotpy_apriltag/__init__.py @@ -9,7 +9,6 @@ AprilTagFieldLayout, AprilTagPoseEstimate, AprilTagPoseEstimator, - loadAprilTagLayoutField, ) __all__ = [ @@ -20,5 +19,4 @@ "AprilTagFieldLayout", "AprilTagPoseEstimate", "AprilTagPoseEstimator", - "loadAprilTagLayoutField", ] From 4ad07d745e0f913498fb4a2f9eb7609b40d84e17 Mon Sep 17 00:00:00 2001 From: Spicuzza Date: Tue, 3 Sep 2024 14:02:36 -0400 Subject: [PATCH 06/30] Various updates --- subprojects/pyntcore/ntcore/__init__.py | 2 +- subprojects/pyntcore/pyproject.toml | 18 +++-- subprojects/robotpy-apriltag/pyproject.toml | 15 +++++ subprojects/robotpy-cscore/cscore/__init__.py | 9 +-- subprojects/robotpy-cscore/pyproject.toml | 3 + .../robotpy-wpilib/gen/ADIS16470_IMU.yml | 2 + .../robotpy-wpilib/gen/Accelerometer.yml | 13 ---- .../robotpy-wpilib/gen/AnalogEncoder.yml | 8 +++ .../robotpy-wpilib/gen/DutyCycleEncoder.yml | 13 ++++ subprojects/robotpy-wpilib/gen/Gyro.yml | 12 ---- .../robotpy-wpilib/gen/IterativeRobotBase.yml | 1 + subprojects/robotpy-wpilib/gen/LEDPattern.yml | 39 +++++++++++ .../robotpy-wpilib/gen/PS4Controller.yml | 7 ++ .../robotpy-wpilib/gen/PS5Controller.yml | 9 +++ .../robotpy-wpilib/gen/PneumaticHub.yml | 2 + .../robotpy-wpilib/gen/PowerDistribution.yml | 4 ++ .../robotpy-wpilib/gen/RobotController.yml | 2 + subprojects/robotpy-wpilib/gen/SharpIR.yml | 18 +++++ .../robotpy-wpilib/gen/StadiaController.yml | 12 ++++ .../robotpy-wpilib/gen/XboxController.yml | 10 +++ .../gen/drive/DifferentialDrive.yml | 9 ++- .../robotpy-wpilib/gen/drive/MecanumDrive.yml | 13 ++-- .../gen/simulation/AnalogEncoderSim.yml | 2 + .../gen/simulation/DutyCycleEncoderSim.yml | 3 + .../gen/simulation/ElevatorSim.yml | 8 +-- .../gen/simulation/FlywheelSim.yml | 7 ++ .../gen/simulation/LinearSystemSim.yml | 4 ++ .../gen/simulation/PS4ControllerSim.yml | 2 + .../gen/simulation/PS5ControllerSim.yml | 2 + .../gen/simulation/SendableChooserSim.yml | 10 +++ .../gen/simulation/SharpIRSim.yml | 10 +++ .../gen/simulation/SingleJointedArmSim.yml | 8 +-- .../gen/simulation/StadiaControllerSim.yml | 32 +++++++++ .../gen/simulation/UltrasonicSim.yml | 3 + .../gen/simulation/XboxControllerSim.yml | 4 ++ subprojects/robotpy-wpilib/pyproject.toml | 65 ++++++++++++------- subprojects/robotpy-wpilib/wpilib/__init__.py | 6 +- .../robotpy-wpilib/wpilib/counter/__init__.py | 2 +- .../robotpy-wpilib/wpilib/drive/__init__.py | 14 +--- .../robotpy-wpilib/wpilib/event/__init__.py | 6 +- .../wpilib/interfaces/__init__.py | 16 +---- .../wpilib/shuffleboard/__init__.py | 2 +- .../wpilib/simulation/__init__.py | 10 ++- subprojects/robotpy-wpimath/pyproject.toml | 48 ++++++++++++++ .../robotpy-wpimath/wpimath/__init__.py | 17 +++++ .../type_casters/units_length_type_caster.h | 8 +++ subprojects/robotpy-wpimath/wpimath/units.py | 1 + subprojects/robotpy-wpinet/pyproject.toml | 5 ++ subprojects/robotpy-wpinet/wpinet/__init__.py | 1 + subprojects/robotpy-wpiutil/pyproject.toml | 12 ++++ .../robotpy-wpiutil/wpiutil/__init__.py | 6 +- .../robotpy-wpiutil/wpiutil/sync/__init__.py | 1 + 52 files changed, 429 insertions(+), 107 deletions(-) delete mode 100644 subprojects/robotpy-wpilib/gen/Accelerometer.yml delete mode 100644 subprojects/robotpy-wpilib/gen/Gyro.yml create mode 100644 subprojects/robotpy-wpilib/gen/LEDPattern.yml create mode 100644 subprojects/robotpy-wpilib/gen/SharpIR.yml create mode 100644 subprojects/robotpy-wpilib/gen/simulation/SendableChooserSim.yml create mode 100644 subprojects/robotpy-wpilib/gen/simulation/SharpIRSim.yml create mode 100644 subprojects/robotpy-wpilib/gen/simulation/StadiaControllerSim.yml diff --git a/subprojects/pyntcore/ntcore/__init__.py b/subprojects/pyntcore/ntcore/__init__.py index 0cb7cab1..d193f81d 100644 --- a/subprojects/pyntcore/ntcore/__init__.py +++ b/subprojects/pyntcore/ntcore/__init__.py @@ -1,6 +1,6 @@ from . import _init_ntcore -# autogenerated by 'robotpy-build create-imports ntcore' +# autogenerated by 'robotpy-build create-imports ntcore ntcore._ntcore' from ._ntcore import ( BooleanArrayEntry, BooleanArrayPublisher, diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index f44fb92f..eea47c90 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -19,6 +19,19 @@ requires = [ [tool.robotpy-build] base_package = "ntcore" +update_init = [ + "ntcore", + "ntcore.meta ntcore._ntcore.meta" +] +scan_headers_ignore = [ + "networktables/ProtobufTopic.h", + "networktables/UnitTopic.h", + + "ntcore.h", + "ntcore_c.h", + "ntcore_c_types.h", + "ntcore_test.h", +] [tool.robotpy-build.wrappers."ntcore".maven_lib_download] artifact_id = "ntcore-cpp" @@ -66,11 +79,6 @@ StructArrayTopic = "networktables/StructArrayTopic.h" StringArrayTopic = "networktables/StringArrayTopic.h" StringTopic = "networktables/StringTopic.h" Topic = "networktables/Topic.h" -# UnitTopic = "networktables/UnitTopic.h" -# ntcore = "ntcore.h" -# ntcore_c = "ntcore_c.h" -# ntcore_c_types = "ntcore_c_types.h" ntcore_cpp = "ntcore_cpp.h" ntcore_cpp_types = "ntcore_cpp_types.h" -# ntcore_test = "ntcore_test.h" diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 142e96c9..59e90b83 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -19,6 +19,21 @@ requires = [ [tool.robotpy-build] base_package = "robotpy_apriltag" +update_init = [ + "robotpy_apriltag robotpy_apriltag._apriltag" +] +scan_headers_ignore = [ + "common/*", + + "apriltag.h", + "apriltag_math.h", + "apriltag_pose.h", + + "frc/apriltag/AprilTagDetector_cv.h", + + "tag16h5.h", + "tag36h11.h", +] [tool.robotpy-build.wrappers."robotpy_apriltag".maven_lib_download] artifact_id = "apriltag-cpp" diff --git a/subprojects/robotpy-cscore/cscore/__init__.py b/subprojects/robotpy-cscore/cscore/__init__.py index 93b37fb2..0f065ed7 100644 --- a/subprojects/robotpy-cscore/cscore/__init__.py +++ b/subprojects/robotpy-cscore/cscore/__init__.py @@ -1,8 +1,6 @@ from . import _init_cscore -from ._logging import enableLogging - -# autogenerated by 'robotpy-build create-imports cscore' +# autogenerated by 'robotpy-build create-imports cscore cscore._cscore' from ._cscore import ( AxisCamera, CameraServer, @@ -49,9 +47,12 @@ "runMainRunLoop", "runMainRunLoopTimeout", "stopMainRunLoop", - "enableLogging", ] +from ._logging import enableLogging + +__all__.append("enableLogging") + try: from .version import __version__ except ImportError: diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 0d77a3b5..24a50c66 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -22,6 +22,9 @@ requires = [ [tool.robotpy-build] base_package = "cscore" +update_init = [ + "cscore" +] [tool.robotpy-build.static_libs."cscore_cpp".maven_lib_download] artifact_id = "cscore-cpp" diff --git a/subprojects/robotpy-wpilib/gen/ADIS16470_IMU.yml b/subprojects/robotpy-wpilib/gen/ADIS16470_IMU.yml index 9169510f..53777da7 100644 --- a/subprojects/robotpy-wpilib/gen/ADIS16470_IMU.yml +++ b/subprojects/robotpy-wpilib/gen/ADIS16470_IMU.yml @@ -7,6 +7,8 @@ classes: ADIS16470_IMU: attributes: m_yaw_axis: + m_pitch_axis: + m_roll_axis: enums: CalibrationTime: IMUAxis: diff --git a/subprojects/robotpy-wpilib/gen/Accelerometer.yml b/subprojects/robotpy-wpilib/gen/Accelerometer.yml deleted file mode 100644 index f5d8cb83..00000000 --- a/subprojects/robotpy-wpilib/gen/Accelerometer.yml +++ /dev/null @@ -1,13 +0,0 @@ ---- - -classes: - Accelerometer: - shared_ptr: true - enums: - Range: - methods: - Accelerometer: - SetRange: - GetX: - GetY: - GetZ: diff --git a/subprojects/robotpy-wpilib/gen/AnalogEncoder.yml b/subprojects/robotpy-wpilib/gen/AnalogEncoder.yml index 883377e5..873cc08c 100644 --- a/subprojects/robotpy-wpilib/gen/AnalogEncoder.yml +++ b/subprojects/robotpy-wpilib/gen/AnalogEncoder.yml @@ -18,6 +18,12 @@ classes: AnalogInput*: ignore: true std::shared_ptr: + int, double, double: + AnalogInput&, double, double: + ignore: true + AnalogInput*, double, double: + ignore: true + std::shared_ptr, double, double: Reset: Get: GetAbsolutePosition: @@ -27,4 +33,6 @@ classes: GetDistancePerRotation: GetDistance: GetChannel: + SetVoltagePercentageRange: + SetInverted: InitSendable: diff --git a/subprojects/robotpy-wpilib/gen/DutyCycleEncoder.yml b/subprojects/robotpy-wpilib/gen/DutyCycleEncoder.yml index a209c0db..8a30c20c 100644 --- a/subprojects/robotpy-wpilib/gen/DutyCycleEncoder.yml +++ b/subprojects/robotpy-wpilib/gen/DutyCycleEncoder.yml @@ -24,6 +24,17 @@ classes: DigitalSource*: ignore: true std::shared_ptr: + int, double, double: + DutyCycle&, double, double: + ignore: true + DutyCycle*, double, double: + ignore: true + std::shared_ptr, double, double: + DigitalSource&, double, double: + ignore: true + DigitalSource*, double, double: + ignore: true + std::shared_ptr, double, double: GetFrequency: IsConnected: SetConnectedFrequencyThreshold: @@ -38,6 +49,8 @@ classes: SetDutyCycleRange: GetFPGAIndex: GetSourceChannel: + SetAssumedFrequency: + SetInverted: InitSendable: inline_code: | diff --git a/subprojects/robotpy-wpilib/gen/Gyro.yml b/subprojects/robotpy-wpilib/gen/Gyro.yml deleted file mode 100644 index f18f7edf..00000000 --- a/subprojects/robotpy-wpilib/gen/Gyro.yml +++ /dev/null @@ -1,12 +0,0 @@ ---- - -classes: - Gyro: - shared_ptr: true - methods: - Gyro: - Calibrate: - Reset: - GetAngle: - GetRate: - GetRotation2d: diff --git a/subprojects/robotpy-wpilib/gen/IterativeRobotBase.yml b/subprojects/robotpy-wpilib/gen/IterativeRobotBase.yml index e887d482..74257e79 100644 --- a/subprojects/robotpy-wpilib/gen/IterativeRobotBase.yml +++ b/subprojects/robotpy-wpilib/gen/IterativeRobotBase.yml @@ -35,6 +35,7 @@ classes: EnableLiveWindowInTest: IsLiveWindowEnabledInTest: GetPeriod: + PrintWatchdogEpochs: doc: | IterativeRobotBase implements a specific type of robot program framework, extending the RobotBase class. diff --git a/subprojects/robotpy-wpilib/gen/LEDPattern.yml b/subprojects/robotpy-wpilib/gen/LEDPattern.yml new file mode 100644 index 00000000..641ec68e --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/LEDPattern.yml @@ -0,0 +1,39 @@ +--- + +classes: + LEDPattern: + attributes: + kOff: + methods: + LEDPattern: + ApplyTo: + overloads: + std::span, LEDWriterFn [const]: + std::span [const]: + Reversed: + OffsetBy: + ScrollAtRelativeSpeed: + ScrollAtAbsoluteSpeed: + Blink: + overloads: + units::second_t, units::second_t: + units::second_t: + SynchronizedBlink: + Breathe: + OverlayOn: + Blend: + Mask: + AtBrightness: + Solid: + ProgressMaskLayer: + Steps: + overloads: + std::span>: + std::initializer_list>: + ignore: true + Gradient: + overloads: + std::span: + std::initializer_list: + ignore: true + Rainbow: diff --git a/subprojects/robotpy-wpilib/gen/PS4Controller.yml b/subprojects/robotpy-wpilib/gen/PS4Controller.yml index 3515ca9c..97a04ddc 100644 --- a/subprojects/robotpy-wpilib/gen/PS4Controller.yml +++ b/subprojects/robotpy-wpilib/gen/PS4Controller.yml @@ -1,10 +1,13 @@ --- extra_includes: +- wpi/sendable/SendableBuilder.h - frc/event/BooleanEvent.h classes: PS4Controller: + ignored_bases: + - wpi::SendableHelper methods: PS4Controller: GetLeftX: @@ -69,6 +72,10 @@ classes: GetTouchpadPressed: GetTouchpadReleased: Touchpad: + GetTouchpadButton: + GetTouchpadButtonPressed: + GetTouchpadButtonReleased: + InitSendable: PS4Controller::Button: attributes: kSquare: diff --git a/subprojects/robotpy-wpilib/gen/PS5Controller.yml b/subprojects/robotpy-wpilib/gen/PS5Controller.yml index 9640f4e3..96f635ae 100644 --- a/subprojects/robotpy-wpilib/gen/PS5Controller.yml +++ b/subprojects/robotpy-wpilib/gen/PS5Controller.yml @@ -1,7 +1,12 @@ --- +extra_includes: +- wpi/sendable/SendableBuilder.h + classes: PS5Controller: + ignored_bases: + - wpi::SendableHelper methods: PS5Controller: GetLeftX: @@ -66,6 +71,10 @@ classes: GetTouchpadPressed: GetTouchpadReleased: Touchpad: + GetTouchpadButton: + GetTouchpadButtonPressed: + GetTouchpadButtonReleased: + InitSendable: PS5Controller::Button: attributes: kSquare: diff --git a/subprojects/robotpy-wpilib/gen/PneumaticHub.yml b/subprojects/robotpy-wpilib/gen/PneumaticHub.yml index 700e6f75..5a287541 100644 --- a/subprojects/robotpy-wpilib/gen/PneumaticHub.yml +++ b/subprojects/robotpy-wpilib/gen/PneumaticHub.yml @@ -88,3 +88,5 @@ classes: CanWarning: CanBusOff: HasReset: + HardwareFault: + FirmwareFault: diff --git a/subprojects/robotpy-wpilib/gen/PowerDistribution.yml b/subprojects/robotpy-wpilib/gen/PowerDistribution.yml index 6378b803..2a2dfb1e 100644 --- a/subprojects/robotpy-wpilib/gen/PowerDistribution.yml +++ b/subprojects/robotpy-wpilib/gen/PowerDistribution.yml @@ -31,6 +31,8 @@ classes: GetVersion: GetFaults: GetStickyFaults: + GetNumChannels: + GetAllCurrents: InitSendable: PowerDistribution::Version: attributes: @@ -101,5 +103,7 @@ classes: CanWarning: CanBusOff: HasReset: + HardwareFault: + FirmwareFault: methods: GetBreakerFault: diff --git a/subprojects/robotpy-wpilib/gen/RobotController.yml b/subprojects/robotpy-wpilib/gen/RobotController.yml index 6bedfab9..6dfc62a5 100644 --- a/subprojects/robotpy-wpilib/gen/RobotController.yml +++ b/subprojects/robotpy-wpilib/gen/RobotController.yml @@ -53,3 +53,5 @@ classes: SetRadioLEDState: GetRadioLEDState: GetCANStatus: + GetCommsDisableCount: + ResetRailFaultCounts: diff --git a/subprojects/robotpy-wpilib/gen/SharpIR.yml b/subprojects/robotpy-wpilib/gen/SharpIR.yml new file mode 100644 index 00000000..99babe2f --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/SharpIR.yml @@ -0,0 +1,18 @@ +--- + +extra_includes: +- wpi/sendable/SendableBuilder.h + +classes: + SharpIR: + ignored_bases: + - wpi::SendableHelper + methods: + GP2Y0A02YK0F: + GP2Y0A21YK0F: + GP2Y0A41SK0F: + GP2Y0A51SK0F: + SharpIR: + GetChannel: + GetRange: + InitSendable: diff --git a/subprojects/robotpy-wpilib/gen/StadiaController.yml b/subprojects/robotpy-wpilib/gen/StadiaController.yml index 8ecd72cf..8aada62d 100644 --- a/subprojects/robotpy-wpilib/gen/StadiaController.yml +++ b/subprojects/robotpy-wpilib/gen/StadiaController.yml @@ -1,7 +1,12 @@ --- +extra_includes: +- wpi/sendable/SendableBuilder.h + classes: StadiaController: + ignored_bases: + - wpi::SendableHelper methods: StadiaController: GetLeftX: @@ -68,6 +73,13 @@ classes: GetRightTriggerButtonPressed: GetRightTriggerButtonReleased: RightTrigger: + GetLeftBumperButton: + GetLeftBumperButtonPressed: + GetLeftBumperButtonReleased: + GetRightBumperButton: + GetRightBumperButtonPressed: + GetRightBumperButtonReleased: + InitSendable: StadiaController::Button: attributes: kA: diff --git a/subprojects/robotpy-wpilib/gen/XboxController.yml b/subprojects/robotpy-wpilib/gen/XboxController.yml index 384788a4..b746a7ff 100644 --- a/subprojects/robotpy-wpilib/gen/XboxController.yml +++ b/subprojects/robotpy-wpilib/gen/XboxController.yml @@ -1,11 +1,14 @@ --- extra_includes: +- wpi/sendable/SendableBuilder.h - frc/DriverStation.h - frc/event/BooleanEvent.h classes: XboxController: + ignored_bases: + - wpi::SendableHelper methods: XboxController: GetLeftX: @@ -62,6 +65,13 @@ classes: overloads: double, EventLoop* [const]: EventLoop* [const]: + GetLeftBumperButton: + GetLeftBumperButtonPressed: + GetLeftBumperButtonReleased: + GetRightBumperButton: + GetRightBumperButtonPressed: + GetRightBumperButtonReleased: + InitSendable: XboxController::Button: attributes: kLeftBumper: diff --git a/subprojects/robotpy-wpilib/gen/drive/DifferentialDrive.yml b/subprojects/robotpy-wpilib/gen/drive/DifferentialDrive.yml index e11250ce..b0359975 100644 --- a/subprojects/robotpy-wpilib/gen/drive/DifferentialDrive.yml +++ b/subprojects/robotpy-wpilib/gen/drive/DifferentialDrive.yml @@ -14,9 +14,12 @@ classes: kDefaultQuickStopAlpha: methods: DifferentialDrive: - keepalive: - - [1, 2] - - [1, 3] + overloads: + MotorController&, MotorController&: + keepalive: + - [1, 2] + - [1, 3] + std::function, std::function: ArcadeDrive: CurvatureDrive: TankDrive: diff --git a/subprojects/robotpy-wpilib/gen/drive/MecanumDrive.yml b/subprojects/robotpy-wpilib/gen/drive/MecanumDrive.yml index 8288855f..ee50b561 100644 --- a/subprojects/robotpy-wpilib/gen/drive/MecanumDrive.yml +++ b/subprojects/robotpy-wpilib/gen/drive/MecanumDrive.yml @@ -12,11 +12,14 @@ classes: - wpi::SendableHelper methods: MecanumDrive: - keepalive: - - [1, 2] - - [1, 3] - - [1, 4] - - [1, 5] + overloads: + MotorController&, MotorController&, MotorController&, MotorController&: + keepalive: + - [1, 2] + - [1, 3] + - [1, 4] + - [1, 5] + std::function, std::function, std::function, std::function: DriveCartesian: param_override: gyroAngle: diff --git a/subprojects/robotpy-wpilib/gen/simulation/AnalogEncoderSim.yml b/subprojects/robotpy-wpilib/gen/simulation/AnalogEncoderSim.yml index 6debf63f..2934deb2 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/AnalogEncoderSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/AnalogEncoderSim.yml @@ -14,3 +14,5 @@ classes: SetTurns: GetTurns: GetPosition: + Set: + Get: diff --git a/subprojects/robotpy-wpilib/gen/simulation/DutyCycleEncoderSim.yml b/subprojects/robotpy-wpilib/gen/simulation/DutyCycleEncoderSim.yml index 9d592d26..1766b569 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/DutyCycleEncoderSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/DutyCycleEncoderSim.yml @@ -8,6 +8,9 @@ classes: shared_ptr: true methods: DutyCycleEncoderSim: + overloads: + const DutyCycleEncoder&: + int: Get: Set: GetDistance: diff --git a/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml b/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml index 0c42eee6..eaa5f03e 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml @@ -11,20 +11,20 @@ classes: ElevatorSim: overloads: ? const LinearSystem<2, 1, 1>&, const DCMotor&, units::meter_t, units::meter_t, - bool, units::meter_t, const std::array& + bool, units::meter_t, const std::array& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0} ? const DCMotor&, double, units::kilogram_t, units::meter_t, units::meter_t, - units::meter_t, bool, units::meter_t, const std::array& + units::meter_t, bool, units::meter_t, const std::array& : param_override: measurementStdDevs: default: std::array{0.0} ? decltype(1_V/Velocity_t (1)), decltype(1_V/Acceleration_t (1)), const DCMotor&, units::meter_t, units::meter_t, bool, units::meter_t, - const std::array& + const std::array& : ignore: true SetState: diff --git a/subprojects/robotpy-wpilib/gen/simulation/FlywheelSim.yml b/subprojects/robotpy-wpilib/gen/simulation/FlywheelSim.yml index 9f31bc9e..9c03f427 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/FlywheelSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/FlywheelSim.yml @@ -21,3 +21,10 @@ classes: GetAngularVelocity: GetCurrentDraw: SetInputVoltage: + SetVelocity: + GetAngularAcceleration: + GetTorque: + GetInputVoltage: + Gearbox: + Gearing: + J: diff --git a/subprojects/robotpy-wpilib/gen/simulation/LinearSystemSim.yml b/subprojects/robotpy-wpilib/gen/simulation/LinearSystemSim.yml index ff809303..a72bcf15 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/LinearSystemSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/LinearSystemSim.yml @@ -30,6 +30,10 @@ classes: overloads: const Vectord&: int, double: + GetInput: + overloads: + '[const]': + int [const]: SetState: GetCurrentDraw: UpdateX: diff --git a/subprojects/robotpy-wpilib/gen/simulation/PS4ControllerSim.yml b/subprojects/robotpy-wpilib/gen/simulation/PS4ControllerSim.yml index 889333b5..c1bcd635 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/PS4ControllerSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/PS4ControllerSim.yml @@ -31,3 +31,5 @@ classes: SetR3Button: SetPSButton: SetTouchpad: + ignore: true + SetTouchpadButton: diff --git a/subprojects/robotpy-wpilib/gen/simulation/PS5ControllerSim.yml b/subprojects/robotpy-wpilib/gen/simulation/PS5ControllerSim.yml index b63e0471..fe537454 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/PS5ControllerSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/PS5ControllerSim.yml @@ -31,3 +31,5 @@ classes: SetR3Button: SetPSButton: SetTouchpad: + ignore: true + SetTouchpadButton: \ No newline at end of file diff --git a/subprojects/robotpy-wpilib/gen/simulation/SendableChooserSim.yml b/subprojects/robotpy-wpilib/gen/simulation/SendableChooserSim.yml new file mode 100644 index 00000000..8303133a --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/simulation/SendableChooserSim.yml @@ -0,0 +1,10 @@ +--- + +classes: + SendableChooserSim: + methods: + SendableChooserSim: + overloads: + std::string_view: + nt::NetworkTableInstance, std::string_view: + SetSelected: diff --git a/subprojects/robotpy-wpilib/gen/simulation/SharpIRSim.yml b/subprojects/robotpy-wpilib/gen/simulation/SharpIRSim.yml new file mode 100644 index 00000000..7d7c6c6d --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/simulation/SharpIRSim.yml @@ -0,0 +1,10 @@ +--- + +classes: + SharpIRSim: + methods: + SharpIRSim: + overloads: + const SharpIR&: + int: + SetRange: diff --git a/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml b/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml index 9440d6f4..88d4ca72 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml @@ -12,18 +12,18 @@ classes: overloads: ? const LinearSystem<2, 1, 1>&, const DCMotor&, double, units::meter_t, units::radian_t, units::radian_t, bool, units::radian_t, const std::array& + 2>& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0} ? const DCMotor&, double, units::kilogram_square_meter_t, units::meter_t, units::radian_t, units::radian_t, bool, units::radian_t, const std::array& + 2>& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0} SetState: WouldHitLowerLimit: WouldHitUpperLimit: diff --git a/subprojects/robotpy-wpilib/gen/simulation/StadiaControllerSim.yml b/subprojects/robotpy-wpilib/gen/simulation/StadiaControllerSim.yml new file mode 100644 index 00000000..a85bd277 --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/simulation/StadiaControllerSim.yml @@ -0,0 +1,32 @@ +--- + +extra_includes: +- frc/StadiaController.h + +classes: + StadiaControllerSim: + force_no_trampoline: true + methods: + StadiaControllerSim: + overloads: + const StadiaController&: + int: + SetLeftX: + SetRightX: + SetLeftY: + SetRightY: + SetAButton: + SetBButton: + SetXButton: + SetYButton: + SetLeftBumperButton: + SetRightBumperButton: + SetLeftStickButton: + SetRightStickButton: + SetEllipsesButton: + SetHamburgerButton: + SetStadiaButton: + SetRightTriggerButton: + SetLeftTriggerButton: + SetGoogleButton: + SetFrameButton: diff --git a/subprojects/robotpy-wpilib/gen/simulation/UltrasonicSim.yml b/subprojects/robotpy-wpilib/gen/simulation/UltrasonicSim.yml index f2ce35b7..073ad758 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/UltrasonicSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/UltrasonicSim.yml @@ -9,5 +9,8 @@ classes: - frc::Ultrasonic methods: UltrasonicSim: + overloads: + const Ultrasonic&: + int, int: SetRangeValid: SetRange: diff --git a/subprojects/robotpy-wpilib/gen/simulation/XboxControllerSim.yml b/subprojects/robotpy-wpilib/gen/simulation/XboxControllerSim.yml index d50ac7b7..def08f49 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/XboxControllerSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/XboxControllerSim.yml @@ -20,7 +20,9 @@ classes: SetLeftTriggerAxis: SetRightTriggerAxis: SetLeftBumper: + ignore: true SetRightBumper: + ignore: true SetLeftStickButton: SetRightStickButton: SetAButton: @@ -29,3 +31,5 @@ classes: SetYButton: SetBackButton: SetStartButton: + SetLeftBumperButton: + SetRightBumperButton: diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index aea1cf37..f89c9a87 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -27,6 +27,43 @@ requires = [ [tool.robotpy-build] base_package = "wpilib" +update_init = [ + "wpilib", + "wpilib.counter", + "wpilib.drive", + "wpilib.event", + "wpilib.interfaces", + "wpilib.shuffleboard", + "wpilib.simulation", + "wpilib.sysid wpilib._wpilib.sysid", +] +scan_headers_ignore = [ + "WPILibVersion.h", + + # needs a python wrapper + "frc/AsynchronousInterrupt.h", + + # Needs HAL object support, not sure if this is a good idea for python + "frc/DMA.h", + "frc/DMASample.h", + + "frc/Filesystem.h", + "frc/Notifier.h", # wrapped separately + "frc/Resource.h", + "frc/ScopedTracer.h", # not useful for python + + "frc/motorcontrol/MotorControllerGroup.h", # wrapped separately + + # Not possible + "frc/shuffleboard/RecordingController.h", + "frc/shuffleboard/SendableCameraWrapper.h", + + "frc/smartdashboard/ListenerExecutor.h", # internal detail + + # Internals + "rpy/ControlWord.h", + "rpy/SmartDashboardData.h", +] [tool.robotpy-build.wrappers."wpilib._impl".maven_lib_download] artifact_id = "wpilibc-cpp" @@ -66,8 +103,6 @@ pp_defines = [ ] [tool.robotpy-build.wrappers."wpilib".autogen_headers] -# WPILibVersion = "WPILibVersion.h" - # frc ADIS16448_IMU = "frc/ADIS16448_IMU.h" ADIS16470_IMU = "frc/ADIS16470_IMU.h" @@ -84,19 +119,13 @@ AnalogOutput = "frc/AnalogOutput.h" AnalogPotentiometer = "frc/AnalogPotentiometer.h" AnalogTrigger = "frc/AnalogTrigger.h" AnalogTriggerOutput = "frc/AnalogTriggerOutput.h" -AnalogTriggerType = "frc/AnalogTriggerType.h" -# AsynchronousInterrupt = "frc/AsynchronousInterrupt.h" # needs a python wrapper +AnalogTriggerType = "frc/AnalogTriggerType.h" BuiltInAccelerometer = "frc/BuiltInAccelerometer.h" CAN = "frc/CAN.h" Compressor = "frc/Compressor.h" CompressorConfigType = "frc/CompressorConfigType.h" -# Controller = "frc/Controller.h" # deprecated Counter = "frc/Counter.h" -# CounterBase = "frc/CounterBase.h" # interfaces DataLogManager = "frc/DataLogManager.h" -# Needs HAL object support, not sure if this is a good idea for python -# DMA = "frc/DMA.h" -# DMASample = "frc/DMASample.h" DSControlWord = "frc/DSControlWord.h" DigitalGlitchFilter = "frc/DigitalGlitchFilter.h" DigitalInput = "frc/DigitalInput.h" @@ -108,14 +137,12 @@ DutyCycle = "frc/DutyCycle.h" DutyCycleEncoder = "frc/DutyCycleEncoder.h" Encoder = "frc/Encoder.h" Errors = "frc/Errors.h" -# Filesystem = "frc/Filesystem.h" Filesystem = "rpy/Filesystem.h" -# GenericHID = "frc/GenericHID.h" # interfaces I2C = "frc/I2C.h" IterativeRobotBase = "frc/IterativeRobotBase.h" Joystick = "frc/Joystick.h" +LEDPattern = "frc/LEDPattern.h" MotorSafety = "frc/MotorSafety.h" -# Notifier = "frc/Notifier.h" Notifier = "rpy/Notifier.h" PS4Controller = "frc/PS4Controller.h" PS5Controller = "frc/PS5Controller.h" @@ -127,19 +154,16 @@ PneumaticsModuleType = "frc/PneumaticsModuleType.h" PowerDistribution = "frc/PowerDistribution.h" Preferences = "frc/Preferences.h" Relay = "frc/Relay.h" -# Resource = "frc/Resource.h" RobotBase = "frc/RobotBase.h" RobotController = "frc/RobotController.h" RobotState = "frc/RobotState.h" RuntimeType = "frc/RuntimeType.h" SPI = "frc/SPI.h" -# ScopedTracer = "frc/ScopedTracer.h" # Not useful for python SensorUtil = "frc/SensorUtil.h" SerialPort = "frc/SerialPort.h" Servo = "frc/Servo.h" +SharpIR = "frc/SharpIR.h" Solenoid = "frc/Solenoid.h" -# SpeedController = "frc/SpeedController.h" # interfaces -# SpeedControllerGroup = "frc/SpeedControllerGroup.h" StadiaController = "frc/StadiaController.h" SynchronousInterrupt = "frc/SynchronousInterrupt.h" Threads = "frc/Threads.h" @@ -160,7 +184,6 @@ LiveWindow = "frc/livewindow/LiveWindow.h" # frc/motorcontrol DMC60 = "frc/motorcontrol/DMC60.h" Jaguar = "frc/motorcontrol/Jaguar.h" -# MotorController = "frc/motorcontrol/MotorController.h" # interfaces MotorControllerGroup = "rpy/MotorControllerGroup.h" NidecBrushless = "frc/motorcontrol/NidecBrushless.h" PWMMotorController = "frc/motorcontrol/PWMMotorController.h" @@ -179,7 +202,6 @@ VictorSP = "frc/motorcontrol/VictorSP.h" # frc/smartdashboard Field2d = "frc/smartdashboard/Field2d.h" FieldObject2d = "frc/smartdashboard/FieldObject2d.h" -# ListenerExecutor = "frc/smartdashboard/ListenerExecutor.h" # internal detail Mechanism2d = "frc/smartdashboard/Mechanism2d.h" MechanismLigament2d = "frc/smartdashboard/MechanismLigament2d.h" MechanismObject2d = "frc/smartdashboard/MechanismObject2d.h" @@ -264,10 +286,6 @@ CounterBase = "frc/CounterBase.h" GenericHID = "frc/GenericHID.h" MotorController = "frc/motorcontrol/MotorController.h" -# frc/interfaces -Accelerometer = "frc/interfaces/Accelerometer.h" -Gyro = "frc/interfaces/Gyro.h" - [tool.robotpy-build.wrappers."wpilib.shuffleboard"] name = "wpilibc_shuffleboard" extension = "_shuffleboard" @@ -361,9 +379,12 @@ REVPHSim = "frc/simulation/REVPHSim.h" RelaySim = "frc/simulation/RelaySim.h" RoboRioSim = "frc/simulation/RoboRioSim.h" SPIAccelerometerSim = "frc/simulation/SPIAccelerometerSim.h" +SendableChooserSim = "frc/simulation/SendableChooserSim.h" +SharpIRSim = "frc/simulation/SharpIRSim.h" SimDeviceSim = "frc/simulation/SimDeviceSim.h" SimHooks = "frc/simulation/SimHooks.h" SingleJointedArmSim = "frc/simulation/SingleJointedArmSim.h" SolenoidSim = "frc/simulation/SolenoidSim.h" +StadiaControllerSim = "frc/simulation/StadiaControllerSim.h" UltrasonicSim = "frc/simulation/UltrasonicSim.h" XboxControllerSim = "frc/simulation/XboxControllerSim.h" diff --git a/subprojects/robotpy-wpilib/wpilib/__init__.py b/subprojects/robotpy-wpilib/wpilib/__init__.py index 1e914f3f..42e8f3e7 100644 --- a/subprojects/robotpy-wpilib/wpilib/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/__init__.py @@ -3,7 +3,7 @@ # TODO: robotpy-build subpackage bug from wpimath._controls._controls import trajectory as _ -# autogenerated by 'robotpy-build create-imports wpilib' +# autogenerated by 'robotpy-build create-imports wpilib wpilib._wpilib' from ._wpilib import ( ADIS16448_IMU, ADIS16470_IMU, @@ -48,6 +48,7 @@ IterativeRobotBase, Jaguar, Joystick, + LEDPattern, LiveWindow, Mechanism2d, MechanismLigament2d, @@ -87,6 +88,7 @@ SensorUtil, SerialPort, Servo, + SharpIR, SmartDashboard, Solenoid, Spark, @@ -155,6 +157,7 @@ "IterativeRobotBase", "Jaguar", "Joystick", + "LEDPattern", "LiveWindow", "Mechanism2d", "MechanismLigament2d", @@ -194,6 +197,7 @@ "SensorUtil", "SerialPort", "Servo", + "SharpIR", "SmartDashboard", "Solenoid", "Spark", diff --git a/subprojects/robotpy-wpilib/wpilib/counter/__init__.py b/subprojects/robotpy-wpilib/wpilib/counter/__init__.py index db3bbb09..b0563ab4 100644 --- a/subprojects/robotpy-wpilib/wpilib/counter/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/counter/__init__.py @@ -1,6 +1,6 @@ from . import _init_counter -# autogenerated by 'robotpy-build create-imports wpilib.counter' +# autogenerated by 'robotpy-build create-imports wpilib.counter wpilib.counter._counter' from ._counter import ( EdgeConfiguration, ExternalDirectionCounter, diff --git a/subprojects/robotpy-wpilib/wpilib/drive/__init__.py b/subprojects/robotpy-wpilib/wpilib/drive/__init__.py index ff962a3f..372de1f2 100644 --- a/subprojects/robotpy-wpilib/wpilib/drive/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/drive/__init__.py @@ -1,16 +1,8 @@ from . import _init_drive -# autogenerated by 'robotpy-build create-imports wpilib.drive' -from ._drive import ( - DifferentialDrive, - MecanumDrive, - RobotDriveBase, -) +# autogenerated by 'robotpy-build create-imports wpilib.drive wpilib.drive._drive' +from ._drive import DifferentialDrive, MecanumDrive, RobotDriveBase -__all__ = [ - "DifferentialDrive", - "MecanumDrive", - "RobotDriveBase", -] +__all__ = ["DifferentialDrive", "MecanumDrive", "RobotDriveBase"] del _init_drive diff --git a/subprojects/robotpy-wpilib/wpilib/event/__init__.py b/subprojects/robotpy-wpilib/wpilib/event/__init__.py index 355d4206..31d3f82a 100644 --- a/subprojects/robotpy-wpilib/wpilib/event/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/event/__init__.py @@ -1,6 +1,6 @@ from . import _init_event -# autogenerated by 'robotpy-build create-imports wpilib.event' -from ._event import BooleanEvent, EventLoop +# autogenerated by 'robotpy-build create-imports wpilib.event wpilib.event._event' +from ._event import BooleanEvent, EventLoop, NetworkBooleanEvent -__all__ = ["BooleanEvent", "EventLoop"] +__all__ = ["BooleanEvent", "EventLoop", "NetworkBooleanEvent"] diff --git a/subprojects/robotpy-wpilib/wpilib/interfaces/__init__.py b/subprojects/robotpy-wpilib/wpilib/interfaces/__init__.py index a0bef2ce..965f072a 100644 --- a/subprojects/robotpy-wpilib/wpilib/interfaces/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/interfaces/__init__.py @@ -1,20 +1,8 @@ from . import _init_interfaces # autogenerated by 'robotpy-build create-imports wpilib.interfaces wpilib.interfaces._interfaces' -from ._interfaces import ( - Accelerometer, - CounterBase, - GenericHID, - Gyro, - MotorController, -) +from ._interfaces import CounterBase, GenericHID, MotorController -__all__ = [ - "Accelerometer", - "CounterBase", - "GenericHID", - "Gyro", - "MotorController", -] +__all__ = ["CounterBase", "GenericHID", "MotorController"] del _init_interfaces diff --git a/subprojects/robotpy-wpilib/wpilib/shuffleboard/__init__.py b/subprojects/robotpy-wpilib/wpilib/shuffleboard/__init__.py index 0d155084..3d7aeb06 100644 --- a/subprojects/robotpy-wpilib/wpilib/shuffleboard/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/shuffleboard/__init__.py @@ -1,6 +1,6 @@ from . import _init_shuffleboard -# autogenerated by 'robotpy-build create-imports wpilib.shuffleboard' +# autogenerated by 'robotpy-build create-imports wpilib.shuffleboard wpilib.shuffleboard._shuffleboard' from ._shuffleboard import ( BuiltInLayouts, BuiltInWidgets, diff --git a/subprojects/robotpy-wpilib/wpilib/simulation/__init__.py b/subprojects/robotpy-wpilib/wpilib/simulation/__init__.py index 541dda8d..e6049006 100644 --- a/subprojects/robotpy-wpilib/wpilib/simulation/__init__.py +++ b/subprojects/robotpy-wpilib/wpilib/simulation/__init__.py @@ -3,7 +3,7 @@ # needed for dcmotor return value, TODO fix in robotpy-build from wpimath._controls._controls import plant as _ -# autogenerated by 'robotpy-build create-imports wpilib.simulation' +# autogenerated by 'robotpy-build create-imports wpilib.simulation wpilib.simulation._simulation' from ._simulation import ( ADIS16448_IMUSim, ADIS16470_IMUSim, @@ -40,6 +40,7 @@ LinearSystemSim_2_2_1, LinearSystemSim_2_2_2, PS4ControllerSim, + PS5ControllerSim, PWMSim, PneumaticsBaseSim, PowerDistributionSim, @@ -47,9 +48,12 @@ RelaySim, RoboRioSim, SPIAccelerometerSim, + SendableChooserSim, + SharpIRSim, SimDeviceSim, SingleJointedArmSim, SolenoidSim, + StadiaControllerSim, UltrasonicSim, XboxControllerSim, getProgramStarted, @@ -100,6 +104,7 @@ "LinearSystemSim_2_2_1", "LinearSystemSim_2_2_2", "PS4ControllerSim", + "PS5ControllerSim", "PWMSim", "PneumaticsBaseSim", "PowerDistributionSim", @@ -107,9 +112,12 @@ "RelaySim", "RoboRioSim", "SPIAccelerometerSim", + "SendableChooserSim", + "SharpIRSim", "SimDeviceSim", "SingleJointedArmSim", "SolenoidSim", + "StadiaControllerSim", "UltrasonicSim", "XboxControllerSim", "getProgramStarted", diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index e05131e8..88a415be 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -19,6 +19,53 @@ requires = [ [tool.robotpy-build] base_package = "wpimath" +update_init = [ + "wpimath" +] + +scan_headers_ignore = [ + + "frc/DARE.h", + "frc/EigenCore.h", + "frc/StateSpaceUtil.h", + + "frc/fmt/Eigen.h", + + "frc/estimator/AngleStatistics.h", + "frc/estimator/KalmanFilterLatencyCompensator.h", + "frc/estimator/MerweScaledSigmaPoints.h", + "frc/estimator/SteadyStateKalmanFilter.h", + "frc/estimator/UnscentedKalmanFilter.h", + "frc/estimator/UnscentedTransform.h", + + "frc/system/Discretization.h", + "frc/system/NumericalIntegration.h", + "frc/system/NumericalJacobian.h", + + "frc/proto/*", + "frc/*/proto/*", + + "frc/struct/*", + "frc/*/struct/*", + + "[eE]igen/*", + + "gcem.hpp", + "gcem_incl/*", + + "sleipnir/*", + "type_casters/*", + "unsupported/*", + "units/*", + "wpimath/protobuf/*", + + "wpimath/MathShared.h", + + "rpy/geometryToString.h", + "PyTrajectoryConstraint.h", + "_units_base_type_caster.h", +] + [tool.robotpy-build.wrappers."wpimath._impl".maven_lib_download] artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" @@ -621,6 +668,7 @@ header = "units_length_type_caster.h" types = [ "units::angstrom_t", "units::astronicalUnit_t", + "units::centimeter_t", "units::chain_t", "units::cubit_t", "units::fathom_t", diff --git a/subprojects/robotpy-wpimath/wpimath/__init__.py b/subprojects/robotpy-wpimath/wpimath/__init__.py index 75378bb1..0bf7d9aa 100644 --- a/subprojects/robotpy-wpimath/wpimath/__init__.py +++ b/subprojects/robotpy-wpimath/wpimath/__init__.py @@ -1,6 +1,23 @@ from . import _init_wpimath # noqa: F401 # autogenerated by 'robotpy-build create-imports wpimath' +from ._wpimath import ( + angleModulus, + applyDeadband, + inputModulus, + objectToRobotPose, +) + +__all__ = [ + "angleModulus", + "applyDeadband", + "inputModulus", + "objectToRobotPose", +] + +# What + +# autogenerated by 'robotpy-build create-imports wpimath wpimath._wpimath' from ._wpimath import ( angleModulus, applyDeadband, diff --git a/subprojects/robotpy-wpimath/wpimath/_impl/src/type_casters/units_length_type_caster.h b/subprojects/robotpy-wpimath/wpimath/_impl/src/type_casters/units_length_type_caster.h index 262a48f5..9f0cee40 100644 --- a/subprojects/robotpy-wpimath/wpimath/_impl/src/type_casters/units_length_type_caster.h +++ b/subprojects/robotpy-wpimath/wpimath/_impl/src/type_casters/units_length_type_caster.h @@ -36,6 +36,14 @@ template <> struct handle_type_name { static constexpr auto name = _("wpimath.units.millimeters"); }; +template <> struct handle_type_name { + static constexpr auto name = _("wpimath.units.centimeters"); +}; + +template <> struct handle_type_name { + static constexpr auto name = _("wpimath.units.centimeters"); +}; + template <> struct handle_type_name { static constexpr auto name = _("wpimath.units.kilometers"); }; diff --git a/subprojects/robotpy-wpimath/wpimath/units.py b/subprojects/robotpy-wpimath/wpimath/units.py index 9554046f..cdcb0f5f 100644 --- a/subprojects/robotpy-wpimath/wpimath/units.py +++ b/subprojects/robotpy-wpimath/wpimath/units.py @@ -344,6 +344,7 @@ def lbsToKilograms(lbs: pounds) -> kilograms: nanometers = float micrometers = float millimeters = float +centimeters = float kilometers = float feet = float mils = float diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 1b73deaf..b297aa99 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -1,5 +1,10 @@ [tool.robotpy-build] base_package = "wpinet" +update_init = [ + "wpinet" +] +# we don't wrap anything here +scan_headers_ignore = ["*"] [tool.robotpy-build.wrappers."wpinet"] name = "wpinet" diff --git a/subprojects/robotpy-wpinet/wpinet/__init__.py b/subprojects/robotpy-wpinet/wpinet/__init__.py index 5ec246d7..163985e0 100644 --- a/subprojects/robotpy-wpinet/wpinet/__init__.py +++ b/subprojects/robotpy-wpinet/wpinet/__init__.py @@ -1,5 +1,6 @@ from . import _init_wpinet + # autogenerated by 'robotpy-build create-imports wpinet wpinet._wpinet' from ._wpinet import PortForwarder diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index e26661a0..bf3e8f44 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -14,6 +14,18 @@ requires = [ [tool.robotpy-build] base_package = "wpiutil" +update_init = [ + "wpiutil", + "wpiutil.log wpiutil._wpiutil.log", + "wpiutil.sync wpiutil._wpiutil.sync", + "wpiutil.wpistruct wpiutil._wpiutil.wpistruct", +] +scan_headers_ignore = [ + "fmt/*", + "google/*", + "wpi/*", + "wpystruct_fns.h", +] [tool.robotpy-build.wrappers."wpiutil"] name = "wpiutil" diff --git a/subprojects/robotpy-wpiutil/wpiutil/__init__.py b/subprojects/robotpy-wpiutil/wpiutil/__init__.py index c7d05032..ea1f9427 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/__init__.py +++ b/subprojects/robotpy-wpiutil/wpiutil/__init__.py @@ -3,22 +3,24 @@ # autogenerated by 'robotpy-build create-imports wpiutil wpiutil._wpiutil' from ._wpiutil import ( ControlRecordType, + DataLogBackgroundWriter, + DataLogWriter, Sendable, SendableBuilder, SendableRegistry, getStackTrace, getStackTraceDefault, - # log, ) __all__ = [ "ControlRecordType", + "DataLogBackgroundWriter", + "DataLogWriter", "Sendable", "SendableBuilder", "SendableRegistry", "getStackTrace", "getStackTraceDefault", - # "log", ] # Imported for side effects only diff --git a/subprojects/robotpy-wpiutil/wpiutil/sync/__init__.py b/subprojects/robotpy-wpiutil/wpiutil/sync/__init__.py index dc2d01be..1ea57e0b 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/sync/__init__.py +++ b/subprojects/robotpy-wpiutil/wpiutil/sync/__init__.py @@ -1,3 +1,4 @@ +# autogenerated by 'robotpy-build create-imports wpiutil.sync wpiutil._wpiutil.sync' from .._wpiutil.sync import ( createEvent, createSemaphore, From 071b52f38714ad73370b18f019a58d1eaa598021 Mon Sep 17 00:00:00 2001 From: Spicuzza Date: Tue, 3 Sep 2024 14:07:54 -0400 Subject: [PATCH 07/30] Updated dependencies - lib updated to 2025.0.0-alpha-1-187-g495c371 --- rdev.toml | 2 +- subprojects/pyntcore/pyproject.toml | 2 +- subprojects/robotpy-apriltag/pyproject.toml | 2 +- subprojects/robotpy-cscore/pyproject.toml | 4 ++-- subprojects/robotpy-hal/pyproject.toml | 2 +- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 2 +- subprojects/robotpy-halsim-gui/pyproject.toml | 2 +- subprojects/robotpy-halsim-ws/pyproject.toml | 4 ++-- subprojects/robotpy-romi/pyproject.toml | 2 +- subprojects/robotpy-wpilib/pyproject.toml | 2 +- subprojects/robotpy-wpimath/pyproject.toml | 2 +- subprojects/robotpy-wpinet/pyproject.toml | 2 +- subprojects/robotpy-wpiutil/pyproject.toml | 2 +- subprojects/robotpy-xrp/pyproject.toml | 4 ++-- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/rdev.toml b/rdev.toml index 04ff17c1..724a300a 100644 --- a/rdev.toml +++ b/rdev.toml @@ -5,7 +5,7 @@ [params] # wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" -wpilib_bin_version = "2025.0.0-alpha-1-154-gb12b83a" +wpilib_bin_version = "2025.0.0-alpha-1-187-g495c371" wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" # Don't update these artifacts diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index eea47c90..221beca4 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -37,7 +37,7 @@ scan_headers_ignore = [ artifact_id = "ntcore-cpp" group_id = "edu.wpi.first.ntcore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["ntcore"] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 59e90b83..6747a3cb 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -39,7 +39,7 @@ scan_headers_ignore = [ artifact_id = "apriltag-cpp" group_id = "edu.wpi.first.apriltag" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["apriltag"] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 24a50c66..707fb6d3 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -30,7 +30,7 @@ update_init = [ artifact_id = "cscore-cpp" group_id = "edu.wpi.first.cscore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["cscore"] @@ -38,7 +38,7 @@ libs = ["cscore"] artifact_id = "cameraserver-cpp" group_id = "edu.wpi.first.cameraserver" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["cameraserver"] diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index 3b29c4bb..2be4b396 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -24,7 +24,7 @@ artifact_id = "hal-cpp" group_id = "edu.wpi.first.hal" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["wpiHal"] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index 098788b9..2d3c5015 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -28,7 +28,7 @@ artifact_id = "halsim_ds_socket" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" dlopenlibs = ["halsim_ds_socket"] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index b516daea..bb20f2e4 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -30,7 +30,7 @@ artifact_id = "halsim_gui" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" dlopenlibs = ["halsim_gui"] diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index 75ca7dda..987ca3f9 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -32,7 +32,7 @@ artifact_id = "halsim_ws_server" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" dlopenlibs = ["halsim_ws_server"] @@ -45,7 +45,7 @@ artifact_id = "halsim_ws_client" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" dlopenlibs = ["halsim_ws_client"] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index 3d69af8e..9e1b0590 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -39,5 +39,5 @@ artifact_id = "romiVendordep-cpp" group_id = "edu.wpi.first.romiVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["romiVendordep"] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index f89c9a87..360b03f5 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -69,7 +69,7 @@ scan_headers_ignore = [ artifact_id = "wpilibc-cpp" group_id = "edu.wpi.first.wpilibc" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["wpilibc"] diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 88a415be..152cdd11 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -70,7 +70,7 @@ scan_headers_ignore = [ artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["wpimath"] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index b297aa99..5ac045ec 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -20,7 +20,7 @@ artifact_id = "wpinet-cpp" group_id = "edu.wpi.first.wpinet" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["wpinet"] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index bf3e8f44..9c912e73 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -47,7 +47,7 @@ artifact_id = "wpiutil-cpp" group_id = "edu.wpi.first.wpiutil" repo_url = "https://frcmaven.wpi.edu/artifactory/development" # repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["wpiutil"] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index 455665e9..eced6edf 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -48,7 +48,7 @@ artifact_id = "xrpVendordep-cpp" group_id = "edu.wpi.first.xrpVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" libs = ["xrpVendordep"] [tool.robotpy-build.wrappers."xrp.extension".maven_lib_download] @@ -56,7 +56,7 @@ artifact_id = "halsim_xrp" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-154-gb12b83a" +version = "2025.0.0-alpha-1-187-g495c371" dlopenlibs = ["halsim_xrp"] From ba2b5e8ece6a7e567a40f044a2cced1a0f311e05 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 19:59:32 -0400 Subject: [PATCH 08/30] Updated dependencies - lib updated to 2025.0.0-alpha-2 --- rdev.toml | 2 +- subprojects/pyntcore/pyproject.toml | 2 +- subprojects/robotpy-apriltag/pyproject.toml | 2 +- subprojects/robotpy-cscore/pyproject.toml | 4 ++-- subprojects/robotpy-hal/pyproject.toml | 2 +- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 2 +- subprojects/robotpy-halsim-gui/pyproject.toml | 2 +- subprojects/robotpy-halsim-ws/pyproject.toml | 4 ++-- subprojects/robotpy-romi/pyproject.toml | 2 +- subprojects/robotpy-wpilib/pyproject.toml | 2 +- subprojects/robotpy-wpimath/pyproject.toml | 2 +- subprojects/robotpy-wpinet/pyproject.toml | 2 +- subprojects/robotpy-wpiutil/pyproject.toml | 2 +- subprojects/robotpy-xrp/pyproject.toml | 4 ++-- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/rdev.toml b/rdev.toml index 724a300a..09f55674 100644 --- a/rdev.toml +++ b/rdev.toml @@ -5,7 +5,7 @@ [params] # wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" -wpilib_bin_version = "2025.0.0-alpha-1-187-g495c371" +wpilib_bin_version = "2025.0.0-alpha-2" wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" # Don't update these artifacts diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index 221beca4..9158144a 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -37,7 +37,7 @@ scan_headers_ignore = [ artifact_id = "ntcore-cpp" group_id = "edu.wpi.first.ntcore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["ntcore"] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 6747a3cb..15a4a7f4 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -39,7 +39,7 @@ scan_headers_ignore = [ artifact_id = "apriltag-cpp" group_id = "edu.wpi.first.apriltag" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["apriltag"] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 707fb6d3..46a4c0f6 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -30,7 +30,7 @@ update_init = [ artifact_id = "cscore-cpp" group_id = "edu.wpi.first.cscore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["cscore"] @@ -38,7 +38,7 @@ libs = ["cscore"] artifact_id = "cameraserver-cpp" group_id = "edu.wpi.first.cameraserver" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["cameraserver"] diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index 2be4b396..c353a1ca 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -24,7 +24,7 @@ artifact_id = "hal-cpp" group_id = "edu.wpi.first.hal" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["wpiHal"] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index 2d3c5015..18ecd51a 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -28,7 +28,7 @@ artifact_id = "halsim_ds_socket" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" dlopenlibs = ["halsim_ds_socket"] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index bb20f2e4..171cecd2 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -30,7 +30,7 @@ artifact_id = "halsim_gui" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" dlopenlibs = ["halsim_gui"] diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index 987ca3f9..52ad1603 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -32,7 +32,7 @@ artifact_id = "halsim_ws_server" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" dlopenlibs = ["halsim_ws_server"] @@ -45,7 +45,7 @@ artifact_id = "halsim_ws_client" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" dlopenlibs = ["halsim_ws_client"] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index 9e1b0590..fcf9cd64 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -39,5 +39,5 @@ artifact_id = "romiVendordep-cpp" group_id = "edu.wpi.first.romiVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["romiVendordep"] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index 360b03f5..8fd90026 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -69,7 +69,7 @@ scan_headers_ignore = [ artifact_id = "wpilibc-cpp" group_id = "edu.wpi.first.wpilibc" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["wpilibc"] diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 152cdd11..80ce1121 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -70,7 +70,7 @@ scan_headers_ignore = [ artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["wpimath"] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 5ac045ec..67465107 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -20,7 +20,7 @@ artifact_id = "wpinet-cpp" group_id = "edu.wpi.first.wpinet" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["wpinet"] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index 9c912e73..8a66c837 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -47,7 +47,7 @@ artifact_id = "wpiutil-cpp" group_id = "edu.wpi.first.wpiutil" repo_url = "https://frcmaven.wpi.edu/artifactory/development" # repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["wpiutil"] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index eced6edf..6e3fa329 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -48,7 +48,7 @@ artifact_id = "xrpVendordep-cpp" group_id = "edu.wpi.first.xrpVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" libs = ["xrpVendordep"] [tool.robotpy-build.wrappers."xrp.extension".maven_lib_download] @@ -56,7 +56,7 @@ artifact_id = "halsim_xrp" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-1-187-g495c371" +version = "2025.0.0-alpha-2" dlopenlibs = ["halsim_xrp"] From 7d1ba28e00dacc542f916a69ba0f46cd969933ae Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 20:07:37 -0400 Subject: [PATCH 09/30] Fix MemoryBuffer::GetFile API change --- subprojects/robotpy-wpiutil/gen/DataLogReader.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/subprojects/robotpy-wpiutil/gen/DataLogReader.yml b/subprojects/robotpy-wpiutil/gen/DataLogReader.yml index 3feb1b2f..eea2dd1e 100644 --- a/subprojects/robotpy-wpiutil/gen/DataLogReader.yml +++ b/subprojects/robotpy-wpiutil/gen/DataLogReader.yml @@ -300,20 +300,19 @@ inline_code: | cls_DataLogReader .def(py::init([](const std::string &filename) { - std::error_code ec; - auto mbuf = wpi::MemoryBuffer::GetFile(filename, ec); - if (ec) { + auto mbuf = wpi::MemoryBuffer::GetFile(filename); + if (!mbuf) { py::gil_scoped_acquire gil; #ifdef _WIN32 - PyErr_SetFromWindowsErr(ec.value()); + PyErr_SetFromWindowsErr(mbuf.error().value()); #else - errno = ec.value(); + errno = mbuf.error().value(); PyErr_SetFromErrno(PyExc_OSError); #endif throw py::error_already_set(); } - return std::make_shared(std::move(mbuf)); + return std::make_shared(std::move(*mbuf)); }), release_gil(), py::arg("filename")) From 824e0e2be56818200aea81340b5d6f7c29a28428 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 20:19:04 -0400 Subject: [PATCH 10/30] Update robotpy-hal - Add scan_headers_ignore list - Update Notifier API usage --- .../hal/simulation/resethandles.cpp | 2 +- subprojects/robotpy-hal/pyproject.toml | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/subprojects/robotpy-hal/hal/simulation/resethandles.cpp b/subprojects/robotpy-hal/hal/simulation/resethandles.cpp index 5f2ac2e5..90a4d32d 100644 --- a/subprojects/robotpy-hal/hal/simulation/resethandles.cpp +++ b/subprojects/robotpy-hal/hal/simulation/resethandles.cpp @@ -15,7 +15,7 @@ void HALSIM_ResetGlobalHandles() { HALSIM_GetNotifierInfo(info, sz); for (int i = 0; i < sz; i++) { - HAL_CleanNotifier(info->handle, nullptr); + HAL_CleanNotifier(info->handle); } } diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index c353a1ca..34b5c3db 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -17,6 +17,35 @@ requires = [ [tool.robotpy-build] base_package = "hal" +scan_headers_ignore = [ + "hal/ChipObject.h", + "hal/DMA.h", + "hal/Errors.h", + "hal/HAL.h", + "hal/Types.h", + "hal/Value.h", + + "hal/cpp/SerialHelper.h", + "hal/cpp/UnsafeDIO.h", + "hal/cpp/fpga_clock.h", + + "hal/handles/DigitalHandleResource.h", + "hal/handles/IndexedClassedHandleResource.h", + "hal/handles/IndexedHandleResource.h", + "hal/handles/LimitedClassedHandleResource.h", + "hal/handles/LimitedHandleResource.h", + "hal/handles/UnlimitedHandleResource.h", + + "hal/roborio/HMB.h", + "hal/roborio/InterruptManager.h", + + "hal/simulation/CanData.h", + "hal/simulation/I2CData.h", + "hal/simulation/NotifyListener.h", + "hal/simulation/SPIData.h", + "hal/simulation/SimCallbackRegistry.h", + "hal/simulation/SimDataValue.h", +] [tool.robotpy-build.wrappers."hal".maven_lib_download] From 2d161c154ad83f280eeef11682399a19d577ba22 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 20:24:59 -0400 Subject: [PATCH 11/30] Update pyntcore API --- subprojects/pyntcore/gen/NetworkTableInstance.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/pyntcore/gen/NetworkTableInstance.yml b/subprojects/pyntcore/gen/NetworkTableInstance.yml index b6c7bda0..cc875e72 100644 --- a/subprojects/pyntcore/gen/NetworkTableInstance.yml +++ b/subprojects/pyntcore/gen/NetworkTableInstance.yml @@ -144,7 +144,7 @@ classes: StopClient: SetServer: overloads: - const char*, unsigned int: + std::string_view, unsigned int: std::span>: std::span, unsigned int: SetServerTeam: From 62a3b82e303e7c7cfbe2137a71a73e33cf741ee1 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 20:48:46 -0400 Subject: [PATCH 12/30] Update wpimath APIs --- .../robotpy-wpimath/gen/controls/ArmFeedforward.yml | 3 +++ .../gen/controls/DifferentialDrivePoseEstimator.yml | 9 ++++++--- .../robotpy-wpimath/gen/controls/ElevatorFeedforward.yml | 3 +++ .../gen/controls/EllipticalRegionConstraint.yml | 3 +++ .../robotpy-wpimath/gen/controls/KalmanFilter.yml | 3 +++ .../gen/controls/MecanumDrivePoseEstimator.yml | 9 ++++++--- .../gen/controls/RectangularRegionConstraint.yml | 3 +++ .../gen/controls/SwerveDrivePoseEstimator.yml | 9 ++++++--- subprojects/robotpy-wpimath/gen/filter/LinearFilter.yml | 3 +++ subprojects/robotpy-wpimath/gen/geometry/Quaternion.yml | 3 +++ .../gen/interpolation/TimeInterpolatableBuffer.yml | 4 ++++ .../gen/kinematics/DifferentialDriveKinematics.yml | 3 +++ .../gen/kinematics/MecanumDriveKinematics.yml | 3 +++ 13 files changed, 49 insertions(+), 9 deletions(-) diff --git a/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml index ce2821fd..9b8f9b27 100644 --- a/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/ArmFeedforward.yml @@ -16,6 +16,9 @@ classes: '[constexpr]': units::volt_t, units::volt_t, units::unit_t, units::unit_t [constexpr]: Calculate: + overloads: + units::unit_t, units::unit_t, units::unit_t [const]: + units::unit_t, units::unit_t, units::unit_t, units::second_t [const]: MaxAchievableVelocity: MinAchievableVelocity: MaxAchievableAcceleration: diff --git a/subprojects/robotpy-wpimath/gen/controls/DifferentialDrivePoseEstimator.yml b/subprojects/robotpy-wpimath/gen/controls/DifferentialDrivePoseEstimator.yml index 9926dec3..73a4f44f 100644 --- a/subprojects/robotpy-wpimath/gen/controls/DifferentialDrivePoseEstimator.yml +++ b/subprojects/robotpy-wpimath/gen/controls/DifferentialDrivePoseEstimator.yml @@ -39,9 +39,12 @@ classes: containing left encoder position, right encoder position, and gyro heading. methods: DifferentialDrivePoseEstimator: - param_override: - nominalDt: - default: 0.02_s + overloads: + DifferentialDriveKinematics&, const Rotation2d&, units::meter_t, units::meter_t, const Pose2d&: + ? DifferentialDriveKinematics&, const Rotation2d&, units::meter_t, units::meter_t, + const Pose2d&, const wpi::array&, const wpi::array& + : SetVisionMeasurementStdDevs: ResetPosition: GetEstimatedPosition: diff --git a/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml b/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml index 67349598..c9d6e682 100644 --- a/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml +++ b/subprojects/robotpy-wpimath/gen/controls/ElevatorFeedforward.yml @@ -12,6 +12,9 @@ classes: "": units::volt_t, units::volt_t, units::unit_t, units::unit_t [constexpr]: Calculate: + overloads: + units::unit_t, units::unit_t [constexpr]: + units::unit_t, units::unit_t, units::second_t [const]: MaxAchievableVelocity: MinAchievableVelocity: MaxAchievableAcceleration: diff --git a/subprojects/robotpy-wpimath/gen/controls/EllipticalRegionConstraint.yml b/subprojects/robotpy-wpimath/gen/controls/EllipticalRegionConstraint.yml index 694513f6..b7833d5b 100644 --- a/subprojects/robotpy-wpimath/gen/controls/EllipticalRegionConstraint.yml +++ b/subprojects/robotpy-wpimath/gen/controls/EllipticalRegionConstraint.yml @@ -12,6 +12,9 @@ classes: - frc::TrajectoryConstraint::MinMax methods: EllipticalRegionConstraint: + overloads: + const Translation2d&, units::meter_t, units::meter_t, const Rotation2d&, const Constraint&: + const Ellipse2d&, const Constraint&: MaxVelocity: MinMaxAcceleration: IsPoseInRegion: diff --git a/subprojects/robotpy-wpimath/gen/controls/KalmanFilter.yml b/subprojects/robotpy-wpimath/gen/controls/KalmanFilter.yml index 5b9c59f6..b5f835ff 100644 --- a/subprojects/robotpy-wpimath/gen/controls/KalmanFilter.yml +++ b/subprojects/robotpy-wpimath/gen/controls/KalmanFilter.yml @@ -29,6 +29,9 @@ classes: Reset: Predict: Correct: + overloads: + const InputVector&, const OutputVector&: + const InputVector&, const OutputVector&, const Matrixd&: templates: KalmanFilter_1_1_1: diff --git a/subprojects/robotpy-wpimath/gen/controls/MecanumDrivePoseEstimator.yml b/subprojects/robotpy-wpimath/gen/controls/MecanumDrivePoseEstimator.yml index ff126e38..ea2f06ff 100644 --- a/subprojects/robotpy-wpimath/gen/controls/MecanumDrivePoseEstimator.yml +++ b/subprojects/robotpy-wpimath/gen/controls/MecanumDrivePoseEstimator.yml @@ -32,9 +32,12 @@ classes: heading. methods: MecanumDrivePoseEstimator: - param_override: - nominalDt: - default: 0.02_s + overloads: + MecanumDriveKinematics&, const Rotation2d&, const MecanumDriveWheelPositions&, const Pose2d&: + ? MecanumDriveKinematics&, const Rotation2d&, const MecanumDriveWheelPositions&, + const Pose2d&, const wpi::array&, const wpi::array& + : SetVisionMeasurementStdDevs: ResetPosition: GetEstimatedPosition: diff --git a/subprojects/robotpy-wpimath/gen/controls/RectangularRegionConstraint.yml b/subprojects/robotpy-wpimath/gen/controls/RectangularRegionConstraint.yml index ba14c96b..772fee9d 100644 --- a/subprojects/robotpy-wpimath/gen/controls/RectangularRegionConstraint.yml +++ b/subprojects/robotpy-wpimath/gen/controls/RectangularRegionConstraint.yml @@ -12,6 +12,9 @@ classes: - frc::TrajectoryConstraint::MinMax methods: RectangularRegionConstraint: + overloads: + const Translation2d&, const Translation2d&, const Constraint&: + const Rectangle2d&, const Constraint&: MaxVelocity: MinMaxAcceleration: IsPoseInRegion: diff --git a/subprojects/robotpy-wpimath/gen/controls/SwerveDrivePoseEstimator.yml b/subprojects/robotpy-wpimath/gen/controls/SwerveDrivePoseEstimator.yml index 11df7108..ca55e09e 100644 --- a/subprojects/robotpy-wpimath/gen/controls/SwerveDrivePoseEstimator.yml +++ b/subprojects/robotpy-wpimath/gen/controls/SwerveDrivePoseEstimator.yml @@ -32,9 +32,12 @@ classes: Outputs: methods: SwerveDrivePoseEstimator: - param_override: - nominalDt: - default: 0.02_s + overloads: + SwerveDriveKinematics&, const Rotation2d&, const wpi::array&, const Pose2d&: + ? SwerveDriveKinematics&, const Rotation2d&, const wpi::array&, const Pose2d&, const wpi::array&, const wpi::array& + : ResetPosition: GetEstimatedPosition: SetVisionMeasurementStdDevs: diff --git a/subprojects/robotpy-wpimath/gen/filter/LinearFilter.yml b/subprojects/robotpy-wpimath/gen/filter/LinearFilter.yml index 7e4972e8..ea2c7b57 100644 --- a/subprojects/robotpy-wpimath/gen/filter/LinearFilter.yml +++ b/subprojects/robotpy-wpimath/gen/filter/LinearFilter.yml @@ -15,6 +15,9 @@ classes: HighPass: MovingAverage: Reset: + overloads: + "": + std::span, std::span: Calculate: LastValue: BackwardFiniteDifference: diff --git a/subprojects/robotpy-wpimath/gen/geometry/Quaternion.yml b/subprojects/robotpy-wpimath/gen/geometry/Quaternion.yml index 42e227af..24628276 100644 --- a/subprojects/robotpy-wpimath/gen/geometry/Quaternion.yml +++ b/subprojects/robotpy-wpimath/gen/geometry/Quaternion.yml @@ -19,6 +19,9 @@ classes: operator+: operator-: operator*: + overloads: + const double [const]: + const Quaternion& [const]: operator/: operator==: operator!=: diff --git a/subprojects/robotpy-wpimath/gen/interpolation/TimeInterpolatableBuffer.yml b/subprojects/robotpy-wpimath/gen/interpolation/TimeInterpolatableBuffer.yml index 4fee0c9f..f59369fc 100644 --- a/subprojects/robotpy-wpimath/gen/interpolation/TimeInterpolatableBuffer.yml +++ b/subprojects/robotpy-wpimath/gen/interpolation/TimeInterpolatableBuffer.yml @@ -18,6 +18,10 @@ classes: Clear: Sample: GetInternalBuffer: + overloads: + "": + '[const]': + ignore: true templates: TimeInterpolatablePose2dBuffer: diff --git a/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml index 9dd4a702..b69bc70f 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/DifferentialDriveKinematics.yml @@ -12,6 +12,9 @@ classes: ToChassisSpeeds: ToWheelSpeeds: ToTwist2d: + overloads: + const units::meter_t, const units::meter_t [const]: + const DifferentialDriveWheelPositions&, const DifferentialDriveWheelPositions& [const]: Interpolate: inline_code: | diff --git a/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml b/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml index 50b4b4f5..01bdade4 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/MecanumDriveKinematics.yml @@ -36,6 +36,9 @@ classes: fl, fr, bl, br = kinematics.toWheelSpeeds(chassisSpeeds) ToChassisSpeeds: ToTwist2d: + overloads: + const MecanumDriveWheelPositions&, const MecanumDriveWheelPositions& [const]: + const MecanumDriveWheelPositions& [const]: GetFrontLeft: GetFrontRight: GetRearLeft: From 08ffed942e9490166a7311eef5fe83184c6f5fba Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 21:26:56 -0400 Subject: [PATCH 13/30] Update wpimath tests, add additional fromFeet to Translation2d --- .../gen/geometry/Translation2d.yml | 3 ++ .../robotpy-wpimath/tests/test_trajectory.py | 49 ++++++------------- .../test_trajectory_exponential_profile.py | 4 +- 3 files changed, 20 insertions(+), 36 deletions(-) diff --git a/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml b/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml index c664454b..106ae12a 100644 --- a/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml +++ b/subprojects/robotpy-wpimath/gen/geometry/Translation2d.yml @@ -51,6 +51,9 @@ inline_code: | .def_static("fromFeet", [](units::foot_t x, units::foot_t y){ return std::make_unique(x, y); }, py::arg("x"), py::arg("y")) + .def_static("fromFeet", [](units::foot_t distance, const Rotation2d &angle) { + return std::make_unique(distance, angle); + }, py::arg("distance"), py::arg("angle")) .def_property_readonly("x", &Translation2d::X) .def_property_readonly("y", &Translation2d::Y) .def_property_readonly("x_feet", [](Translation2d * self) -> units::foot_t { diff --git a/subprojects/robotpy-wpimath/tests/test_trajectory.py b/subprojects/robotpy-wpimath/tests/test_trajectory.py index 817a63fb..da2c04b3 100644 --- a/subprojects/robotpy-wpimath/tests/test_trajectory.py +++ b/subprojects/robotpy-wpimath/tests/test_trajectory.py @@ -4,7 +4,7 @@ import wpimath.trajectory.constraint from wpimath.spline import CubicHermiteSpline, SplineHelper -from wpimath.geometry import Pose2d, Rotation2d, Translation2d +from wpimath.geometry import Ellipse2d, Pose2d, Rectangle2d, Rotation2d, Translation2d from wpimath.trajectory import Trajectory, TrajectoryConfig @@ -47,15 +47,11 @@ def getTestTrajectory(config: TrajectoryConfig) -> Trajectory: def test_elliptical_region_constraint(): maxVelocity = 2 + ellipse = Ellipse2d.fromFeet(Pose2d.fromFeet(5, 2.5, math.radians(180)), 5, 2.5) + config = TrajectoryConfig.fromFps(13, 13) maxVelConstraint = MaxVelocityConstraint.fromFps(maxVelocity) - regionConstraint = EllipticalRegionConstraint.fromFeet( - Translation2d.fromFeet(5, 2.5), - 10, - 5, - Rotation2d.fromDegrees(180), - maxVelConstraint, - ) + regionConstraint = EllipticalRegionConstraint(ellipse, maxVelConstraint) config.addConstraint(regionConstraint) @@ -63,22 +59,18 @@ def test_elliptical_region_constraint(): exceededConstraintOutsideRegion = False for point in trajectory.states(): - translation = point.pose.translation() - if translation.x_feet < 10 and translation.y_feet < 5: + if ellipse.contains(point.pose.translation()): assert abs(point.velocity_fps) < maxVelocity + 0.05 elif abs(point.velocity_fps) >= maxVelocity + 0.05: exceededConstraintOutsideRegion = True - assert exceededConstraintOutsideRegion - - -def test_elliptical_region_is_pose_in_region(): - maxVelConstraint = MaxVelocityConstraint.fromFps(2) - regionConstraintNoRotation = EllipticalRegionConstraint.fromFeet( - Translation2d.fromFeet(1, 1), 2, 4, Rotation2d(0), maxVelConstraint - ) + # translation = point.pose.translation() + # if translation.x_feet < 10 and translation.y_feet < 5: + # assert abs(point.velocity_fps) < maxVelocity + 0.05 + # elif abs(point.velocity_fps) >= maxVelocity + 0.05: + # exceededConstraintOutsideRegion = True - assert not regionConstraintNoRotation.isPoseInRegion(Pose2d.fromFeet(2.1, 1, 0)) + assert exceededConstraintOutsideRegion # @@ -88,13 +80,11 @@ def test_elliptical_region_is_pose_in_region(): def test_rectangular_region_constraint(): maxVelocity = 2 + rectangle = Rectangle2d(Translation2d.fromFeet(1, 1), Translation2d.fromFeet(5, 27)) + config = TrajectoryConfig.fromFps(13, 13) maxVelConstraint = MaxVelocityConstraint.fromFps(maxVelocity) - regionConstraint = RectangularRegionConstraint( - Translation2d.fromFeet(1, 1), - Translation2d.fromFeet(5, 27), - maxVelConstraint, - ) + regionConstraint = RectangularRegionConstraint(rectangle, maxVelConstraint) config.addConstraint(regionConstraint) @@ -102,7 +92,7 @@ def test_rectangular_region_constraint(): exceededConstraintOutsideRegion = False for point in trajectory.states(): - if regionConstraint.isPoseInRegion(point.pose): + if rectangle.contains(point.pose.translation()): assert abs(point.velocity_fps) < maxVelocity + 0.05 elif abs(point.velocity_fps) >= maxVelocity + 0.05: exceededConstraintOutsideRegion = True @@ -110,15 +100,6 @@ def test_rectangular_region_constraint(): assert exceededConstraintOutsideRegion -def test_rectangular_region_is_pose_in_region(): - maxVelConstraint = MaxVelocityConstraint.fromFps(2) - regionConstraint = RectangularRegionConstraint( - Translation2d.fromFeet(1, 1), Translation2d.fromFeet(5, 27), maxVelConstraint - ) - assert not regionConstraint.isPoseInRegion(Pose2d()) - assert regionConstraint.isPoseInRegion(Pose2d.fromFeet(3, 14.5, Rotation2d())) - - # # TrajectoryParameterizer # diff --git a/subprojects/robotpy-wpimath/tests/test_trajectory_exponential_profile.py b/subprojects/robotpy-wpimath/tests/test_trajectory_exponential_profile.py index c9e9dc36..0bb90cf1 100644 --- a/subprojects/robotpy-wpimath/tests/test_trajectory_exponential_profile.py +++ b/subprojects/robotpy-wpimath/tests/test_trajectory_exponential_profile.py @@ -8,7 +8,7 @@ from wpimath.trajectory import ExponentialProfileMeterVolts kDt = 0.01 -feedforward = SimpleMotorFeedforwardMeters(0, 2.5629, 0.43277) +feedforward = SimpleMotorFeedforwardMeters(0, 2.5629, 0.43277, kDt) constraints = ExponentialProfileMeterVolts.Constraints.fromCharacteristics( 12, 2.5629, 0.43277 ) @@ -32,7 +32,7 @@ def check_dynamics( ): next_state = profile.calculate(kDt, current, goal) - signal = feedforward.calculate(current.velocity, next_state.velocity, kDt) + signal = feedforward.calculate(current.velocity, next_state.velocity) assert abs(signal) < constraints.maxInput + 1e-9 From 010900dd22308764cf1e048721718ebe17dc89a9 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 21:33:19 -0400 Subject: [PATCH 14/30] Update to cvnp d2b808a0b6faeb025647973cb966e728e816d6d2 - Fixes #99 --- subprojects/robotpy-cscore/cscore/cvnp/cvnp.cpp | 10 +--------- subprojects/robotpy-cscore/cscore/cvnp/cvnp.h | 1 + 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/subprojects/robotpy-cscore/cscore/cvnp/cvnp.cpp b/subprojects/robotpy-cscore/cscore/cvnp/cvnp.cpp index 5950218b..284f406e 100644 --- a/subprojects/robotpy-cscore/cscore/cvnp/cvnp.cpp +++ b/subprojects/robotpy-cscore/cscore/cvnp/cvnp.cpp @@ -181,15 +181,7 @@ namespace cvnp bool is_array_contiguous(const pybind11::array& a) { - pybind11::ssize_t expected_stride = a.itemsize(); - for (int i = a.ndim() - 1; i >=0; --i) - { - pybind11::ssize_t current_stride = a.strides()[i]; - if (current_stride != expected_stride) - return false; - expected_stride = expected_stride * a.shape()[i]; - } - return true; + return a.flags() & pybind11::array::c_style; } diff --git a/subprojects/robotpy-cscore/cscore/cvnp/cvnp.h b/subprojects/robotpy-cscore/cscore/cvnp/cvnp.h index c069c625..c78a9d11 100644 --- a/subprojects/robotpy-cscore/cscore/cvnp/cvnp.h +++ b/subprojects/robotpy-cscore/cscore/cvnp/cvnp.h @@ -49,6 +49,7 @@ namespace cvnp return pybind11::array( pybind11::dtype::of<_Tp>() , std::vector {_rows, _cols} + , std::vector{_cols * sizeof(_Tp), sizeof(_Tp)} // Strides , m.val ); } From 0486ab89858fc829f84328a223cb9a9b1f226c4f Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 21:45:12 -0400 Subject: [PATCH 15/30] Update robotpy-apriltag --- subprojects/robotpy-apriltag/pyproject.toml | 1 + .../robotpy-apriltag/tests/tag1_640_480.jpg | Bin 15576 -> 26688 bytes 2 files changed, 1 insertion(+) diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 15a4a7f4..b167064c 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -24,6 +24,7 @@ update_init = [ ] scan_headers_ignore = [ "common/*", + "test/*", "apriltag.h", "apriltag_math.h", diff --git a/subprojects/robotpy-apriltag/tests/tag1_640_480.jpg b/subprojects/robotpy-apriltag/tests/tag1_640_480.jpg index a18957d65702d9f089c246431edb863eccdb4ff2..ad5cdce4c4705c7e1f56335db8241215abb14aca 100644 GIT binary patch literal 26688 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

S@5MJlgZv?Kk{+g*%B0Jr#c5J8h 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 GOaBYz-gA-w From bf9ec059eb745f1c4a1b3046787dce1cd3c172f6 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 22:58:50 -0400 Subject: [PATCH 16/30] Update robotpy-wpilib --- subprojects/robotpy-wpilib/gen/Alert.yml | 13 +++++++++++++ subprojects/robotpy-wpilib/gen/AnalogTrigger.yml | 9 ++++++++- subprojects/robotpy-wpilib/gen/DataLogManager.yml | 1 + subprojects/robotpy-wpilib/gen/Notifier.yml | 2 +- .../robotpy-wpilib/gen/PWMMotorController.yml | 1 + .../robotpy-wpilib/gen/simulation/ElevatorSim.yml | 6 +++--- .../gen/simulation/SingleJointedArmSim.yml | 6 +++--- subprojects/robotpy-wpilib/pyproject.toml | 1 + .../robotpy-wpilib/wpilib/src/rpy/Notifier.cpp | 4 ++-- .../robotpy-wpilib/wpilib/src/rpy/Notifier.h | 2 +- 10 files changed, 34 insertions(+), 11 deletions(-) create mode 100644 subprojects/robotpy-wpilib/gen/Alert.yml diff --git a/subprojects/robotpy-wpilib/gen/Alert.yml b/subprojects/robotpy-wpilib/gen/Alert.yml new file mode 100644 index 00000000..4909bfeb --- /dev/null +++ b/subprojects/robotpy-wpilib/gen/Alert.yml @@ -0,0 +1,13 @@ +--- + +classes: + Alert: + enums: + AlertType: + methods: + Alert: + overloads: + std::string_view, AlertType: + std::string_view, std::string_view, AlertType: + Set: + SetText: diff --git a/subprojects/robotpy-wpilib/gen/AnalogTrigger.yml b/subprojects/robotpy-wpilib/gen/AnalogTrigger.yml index a733ba59..bc8d4c54 100644 --- a/subprojects/robotpy-wpilib/gen/AnalogTrigger.yml +++ b/subprojects/robotpy-wpilib/gen/AnalogTrigger.yml @@ -8,15 +8,22 @@ extra_includes: classes: AnalogTrigger: - shared_ptr: true ignored_bases: - wpi::SendableHelper methods: AnalogTrigger: overloads: int: + AnalogInput&: + ignore: true AnalogInput*: + ignore: true + std::shared_ptr: + DutyCycle&: + ignore: true DutyCycle*: + ignore: true + std::shared_ptr: SetLimitsVoltage: SetLimitsDutyCycle: SetLimitsRaw: diff --git a/subprojects/robotpy-wpilib/gen/DataLogManager.yml b/subprojects/robotpy-wpilib/gen/DataLogManager.yml index 9f06e884..bcbdd505 100644 --- a/subprojects/robotpy-wpilib/gen/DataLogManager.yml +++ b/subprojects/robotpy-wpilib/gen/DataLogManager.yml @@ -13,3 +13,4 @@ classes: return_value_policy: reference GetLogDir: LogNetworkTables: + LogConsoleOutput: diff --git a/subprojects/robotpy-wpilib/gen/Notifier.yml b/subprojects/robotpy-wpilib/gen/Notifier.yml index 93d30c91..7024a6f0 100644 --- a/subprojects/robotpy-wpilib/gen/Notifier.yml +++ b/subprojects/robotpy-wpilib/gen/Notifier.yml @@ -9,7 +9,7 @@ classes: overloads: std::function: SetName: - SetHandler: + SetCallback: StartSingle: overloads: double: diff --git a/subprojects/robotpy-wpilib/gen/PWMMotorController.yml b/subprojects/robotpy-wpilib/gen/PWMMotorController.yml index f0b07ca1..c06871e5 100644 --- a/subprojects/robotpy-wpilib/gen/PWMMotorController.yml +++ b/subprojects/robotpy-wpilib/gen/PWMMotorController.yml @@ -14,6 +14,7 @@ classes: Set: SetVoltage: Get: + GetVoltage: SetInverted: GetInverted: Disable: diff --git a/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml b/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml index eaa5f03e..2614084a 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/ElevatorSim.yml @@ -10,18 +10,18 @@ classes: methods: ElevatorSim: overloads: - ? const LinearSystem<2, 1, 1>&, const DCMotor&, units::meter_t, units::meter_t, + ? const LinearSystem<2, 1, 2>&, const DCMotor&, units::meter_t, units::meter_t, bool, units::meter_t, const std::array& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0, 0.0} ? const DCMotor&, double, units::kilogram_t, units::meter_t, units::meter_t, units::meter_t, bool, units::meter_t, const std::array& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0} ? decltype(1_V/Velocity_t (1)), decltype(1_V/Acceleration_t (1)), const DCMotor&, units::meter_t, units::meter_t, bool, units::meter_t, const std::array& diff --git a/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml b/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml index 88d4ca72..38ba432f 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/SingleJointedArmSim.yml @@ -10,20 +10,20 @@ classes: methods: SingleJointedArmSim: overloads: - ? const LinearSystem<2, 1, 1>&, const DCMotor&, double, units::meter_t, + ? const LinearSystem<2, 1, 2>&, const DCMotor&, double, units::meter_t, units::radian_t, units::radian_t, bool, units::radian_t, const std::array& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0, 0.0} ? const DCMotor&, double, units::kilogram_square_meter_t, units::meter_t, units::radian_t, units::radian_t, bool, units::radian_t, const std::array& : param_override: measurementStdDevs: - default: std::array{0.0} + default: std::array{0.0, 0.0} SetState: WouldHitLowerLimit: WouldHitUpperLimit: diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index 8fd90026..b61ccf42 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -111,6 +111,7 @@ ADXL345_SPI = "frc/ADXL345_SPI.h" ADXL362 = "frc/ADXL362.h" ADXRS450_Gyro = "frc/ADXRS450_Gyro.h" AddressableLED = "frc/AddressableLED.h" +Alert = "frc/Alert.h" AnalogAccelerometer = "frc/AnalogAccelerometer.h" AnalogEncoder = "frc/AnalogEncoder.h" AnalogGyro = "frc/AnalogGyro.h" diff --git a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp index e31aec23..528f23be 100644 --- a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp +++ b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp @@ -84,7 +84,7 @@ PyNotifier::~PyNotifier() { m_thread.attr("join")(); } - HAL_CleanNotifier(handle, &status); + HAL_CleanNotifier(handle); } PyNotifier::PyNotifier(PyNotifier &&rhs) @@ -117,7 +117,7 @@ void PyNotifier::SetName(std::string_view name) { HAL_SetNotifierName(m_notifier, buf.data(), &status); } -void PyNotifier::SetHandler(std::function handler) { +void PyNotifier::SetCallback(std::function handler) { std::scoped_lock lock(m_processMutex); m_handler = handler; } diff --git a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.h b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.h index 0e3b8a61..c05a4088 100644 --- a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.h +++ b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.h @@ -57,7 +57,7 @@ class PyNotifier { * * @param handler Handler */ - void SetHandler(std::function handler); + void SetCallback(std::function handler); /** * Register for single event notification. From 005ec35e002fa7d160286b823081c4941eafa857 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 23:19:07 -0400 Subject: [PATCH 17/30] Bump macos deployment target --- .github/workflows/dist.yml | 2 +- devtools/__main__.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index f2eb158f..9445f071 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -67,7 +67,7 @@ jobs: max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }} fail-fast: true matrix: - os: ["ubuntu-22.04", "macos-12", "windows-2022"] + os: ["ubuntu-22.04", "macos-13", "windows-2022"] python_version: - '3.8' - '3.9' diff --git a/devtools/__main__.py b/devtools/__main__.py index da868cac..02c49486 100644 --- a/devtools/__main__.py +++ b/devtools/__main__.py @@ -16,7 +16,7 @@ # MACOSX_DEPLOYMENT_TARGET is required for linking to WPILib if sys.platform == "darwin": - os.environ["MACOSX_DEPLOYMENT_TARGET"] = "12" + os.environ["MACOSX_DEPLOYMENT_TARGET"] = "13" @click.group() From 23348705063471af6e232460ba457f00d97c7159 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 28 Sep 2024 23:19:22 -0400 Subject: [PATCH 18/30] Update XRP .gitignore --- subprojects/robotpy-xrp/.gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/subprojects/robotpy-xrp/.gitignore b/subprojects/robotpy-xrp/.gitignore index ca5b76cd..5d85e7ee 100644 --- a/subprojects/robotpy-xrp/.gitignore +++ b/subprojects/robotpy-xrp/.gitignore @@ -9,4 +9,7 @@ /xrp/lib /xrp/_init_xrp.py /xrp/pkgcfg.py -/xrp/version.py \ No newline at end of file +/xrp/version.py +/xrp/extension/_init_xrp_ext.py +/xrp/extension/include +/xrp/extension/pkgcfg.py \ No newline at end of file From b7e7d318c7002d5ee79aebb31572d9b51de24e46 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 29 Sep 2024 00:14:03 -0400 Subject: [PATCH 19/30] Updated dependencies - build-system.requires: robotpy-build<2025.0.0,~=2024.0.2 --- rdev.toml | 2 +- subprojects/pyntcore/pyproject.toml | 2 +- subprojects/robotpy-apriltag/pyproject.toml | 2 +- subprojects/robotpy-cscore/pyproject.toml | 2 +- subprojects/robotpy-hal/pyproject.toml | 2 +- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 2 +- subprojects/robotpy-halsim-gui/pyproject.toml | 2 +- subprojects/robotpy-halsim-ws/pyproject.toml | 2 +- subprojects/robotpy-romi/pyproject.toml | 2 +- subprojects/robotpy-wpilib/pyproject.toml | 2 +- subprojects/robotpy-wpimath/pyproject.toml | 2 +- subprojects/robotpy-wpinet/pyproject.toml | 2 +- subprojects/robotpy-wpiutil/pyproject.toml | 2 +- subprojects/robotpy-xrp/pyproject.toml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/rdev.toml b/rdev.toml index 09f55674..ca107ba5 100644 --- a/rdev.toml +++ b/rdev.toml @@ -13,7 +13,7 @@ exclude_artifacts = [ "opencv-cpp" ] -robotpy_build_req = "<2025.0.0,~=2024.0.0" +robotpy_build_req = "<2025.0.0,~=2024.0.2" # # Subproject configuration diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index 9158144a..b4fbe6c0 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -12,7 +12,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index b167064c..0e592e26 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -12,7 +12,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", ] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 46a4c0f6..ed98bf7a 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -13,7 +13,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", "robotpy-wpinet~=2024.3.1", "pyntcore~=2024.3.1", diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index 34b5c3db..216b7163 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", ] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index 18ecd51a..df34e9cf 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -15,7 +15,7 @@ robotpysimext = ["ds-socket = halsim_ds_socket"] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-hal~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index 171cecd2..8cf98a76 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -14,7 +14,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", "robotpy-hal~=2024.3.1", diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index 52ad1603..c3668482 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -19,7 +19,7 @@ robotpysimext = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-hal~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index fcf9cd64..170a0ab6 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "wpilib~=2024.3.1" ] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index b61ccf42..bc2da7be 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -18,7 +18,7 @@ robotpy = ["run = wpilib._impl.start:Main"] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", "robotpy-hal~=2024.3.1", diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 80ce1121..207d36ee 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", # "numpy", # broken in raspbian CI ] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 67465107..5ae52991 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -41,6 +41,6 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "robotpy-wpiutil~=2024.3.1", ] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index 8a66c837..db12f249 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -9,7 +9,7 @@ install_requires = [] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", ] [tool.robotpy-build] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index 6e3fa329..117de8ec 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -16,7 +16,7 @@ robotpysimext = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.0", + "robotpy-build<2025.0.0,~=2024.0.2", "wpilib~=2024.3.1" ] From e2f072e44f52265f19f66bc662278a4205faaac7 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sun, 29 Sep 2024 01:38:04 -0400 Subject: [PATCH 20/30] Workaround for GCC issue on raspbian --- subprojects/robotpy-wpimath/gen/MathUtil.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/subprojects/robotpy-wpimath/gen/MathUtil.yml b/subprojects/robotpy-wpimath/gen/MathUtil.yml index cd33aaca..d22b180a 100644 --- a/subprojects/robotpy-wpimath/gen/MathUtil.yml +++ b/subprojects/robotpy-wpimath/gen/MathUtil.yml @@ -8,9 +8,19 @@ functions: FloorDiv: template_impls: - [int64_t, int64_t] + # work around GCC 10 issue on raspbian + cpp_code: | + [](int64_t x, int64_t y) -> int64_t { + return frc::FloorDiv(x, y); + } FloorMod: template_impls: - [int64_t, int64_t] + # work around GCC 10 issue on raspbian + cpp_code: | + [](int64_t x, int64_t y) -> int64_t { + return frc::FloorMod(x, y); + } ApplyDeadband: param_override: maxMagnitude: From 46482c177f4a4fa143dfcfb0fa8ebdf27b0e02d7 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Tue, 1 Oct 2024 23:28:00 -0400 Subject: [PATCH 21/30] Updated dependencies - lib updated to 2025.0.0-alpha-2-21-g466a4a5 --- rdev.toml | 2 +- subprojects/pyntcore/pyproject.toml | 2 +- subprojects/robotpy-apriltag/pyproject.toml | 2 +- subprojects/robotpy-cscore/pyproject.toml | 4 ++-- subprojects/robotpy-hal/pyproject.toml | 2 +- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 2 +- subprojects/robotpy-halsim-gui/pyproject.toml | 2 +- subprojects/robotpy-halsim-ws/pyproject.toml | 4 ++-- subprojects/robotpy-romi/pyproject.toml | 2 +- subprojects/robotpy-wpilib/pyproject.toml | 2 +- subprojects/robotpy-wpimath/pyproject.toml | 2 +- subprojects/robotpy-wpinet/pyproject.toml | 2 +- subprojects/robotpy-wpiutil/pyproject.toml | 2 +- subprojects/robotpy-xrp/pyproject.toml | 4 ++-- 14 files changed, 17 insertions(+), 17 deletions(-) diff --git a/rdev.toml b/rdev.toml index ca107ba5..91be936a 100644 --- a/rdev.toml +++ b/rdev.toml @@ -5,7 +5,7 @@ [params] # wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" -wpilib_bin_version = "2025.0.0-alpha-2" +wpilib_bin_version = "2025.0.0-alpha-2-21-g466a4a5" wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" # Don't update these artifacts diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index b4fbe6c0..e6e1f6bd 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -37,7 +37,7 @@ scan_headers_ignore = [ artifact_id = "ntcore-cpp" group_id = "edu.wpi.first.ntcore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["ntcore"] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 0e592e26..0f9531dd 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -40,7 +40,7 @@ scan_headers_ignore = [ artifact_id = "apriltag-cpp" group_id = "edu.wpi.first.apriltag" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["apriltag"] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index ed98bf7a..3cedb8b8 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -30,7 +30,7 @@ update_init = [ artifact_id = "cscore-cpp" group_id = "edu.wpi.first.cscore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["cscore"] @@ -38,7 +38,7 @@ libs = ["cscore"] artifact_id = "cameraserver-cpp" group_id = "edu.wpi.first.cameraserver" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["cameraserver"] diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index 216b7163..eed8d18e 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -53,7 +53,7 @@ artifact_id = "hal-cpp" group_id = "edu.wpi.first.hal" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["wpiHal"] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index df34e9cf..a07c1a25 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -28,7 +28,7 @@ artifact_id = "halsim_ds_socket" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" dlopenlibs = ["halsim_ds_socket"] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index 8cf98a76..8d21cdbd 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -30,7 +30,7 @@ artifact_id = "halsim_gui" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" dlopenlibs = ["halsim_gui"] diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index c3668482..b657b820 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -32,7 +32,7 @@ artifact_id = "halsim_ws_server" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" dlopenlibs = ["halsim_ws_server"] @@ -45,7 +45,7 @@ artifact_id = "halsim_ws_client" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" dlopenlibs = ["halsim_ws_client"] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index 170a0ab6..de5a195e 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -39,5 +39,5 @@ artifact_id = "romiVendordep-cpp" group_id = "edu.wpi.first.romiVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["romiVendordep"] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index bc2da7be..61b9af47 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -69,7 +69,7 @@ scan_headers_ignore = [ artifact_id = "wpilibc-cpp" group_id = "edu.wpi.first.wpilibc" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["wpilibc"] diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 207d36ee..3c474cbf 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -70,7 +70,7 @@ scan_headers_ignore = [ artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["wpimath"] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 5ae52991..91e34781 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -20,7 +20,7 @@ artifact_id = "wpinet-cpp" group_id = "edu.wpi.first.wpinet" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["wpinet"] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index db12f249..2f112a0d 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -47,7 +47,7 @@ artifact_id = "wpiutil-cpp" group_id = "edu.wpi.first.wpiutil" repo_url = "https://frcmaven.wpi.edu/artifactory/development" # repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["wpiutil"] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index 117de8ec..311eb349 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -48,7 +48,7 @@ artifact_id = "xrpVendordep-cpp" group_id = "edu.wpi.first.xrpVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" libs = ["xrpVendordep"] [tool.robotpy-build.wrappers."xrp.extension".maven_lib_download] @@ -56,7 +56,7 @@ artifact_id = "halsim_xrp" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2" +version = "2025.0.0-alpha-2-21-g466a4a5" dlopenlibs = ["halsim_xrp"] From 75ded9dd172d8c7b2e4a12369faadb17f6361595 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Tue, 1 Oct 2024 23:56:36 -0400 Subject: [PATCH 22/30] Update to latest WPILib dev commit --- subprojects/robotpy-wpimath/gen/controls/DCMotor.yml | 3 +++ subprojects/robotpy-wpimath/gen/controls/PIDController.yml | 4 ++++ .../robotpy-wpimath/gen/kinematics/SwerveModuleState.yml | 4 ++++ 3 files changed, 11 insertions(+) diff --git a/subprojects/robotpy-wpimath/gen/controls/DCMotor.yml b/subprojects/robotpy-wpimath/gen/controls/DCMotor.yml index 2a8c6d8c..3b2bb296 100644 --- a/subprojects/robotpy-wpimath/gen/controls/DCMotor.yml +++ b/subprojects/robotpy-wpimath/gen/controls/DCMotor.yml @@ -19,6 +19,9 @@ classes: methods: DCMotor: Current: + overloads: + units::radians_per_second_t, units::volt_t [const]: + units::newton_meter_t [const]: Torque: Voltage: Speed: diff --git a/subprojects/robotpy-wpimath/gen/controls/PIDController.yml b/subprojects/robotpy-wpimath/gen/controls/PIDController.yml index 376ca4b1..85b7809e 100644 --- a/subprojects/robotpy-wpimath/gen/controls/PIDController.yml +++ b/subprojects/robotpy-wpimath/gen/controls/PIDController.yml @@ -20,6 +20,8 @@ classes: GetD: GetIZone: GetPeriod: + GetErrorTolerance: + GetErrorDerivativeTolerance: GetPositionTolerance: GetVelocityTolerance: GetAccumulatedError: @@ -31,6 +33,8 @@ classes: IsContinuousInputEnabled: SetIntegratorRange: SetTolerance: + GetError: + GetErrorDerivative: GetPositionError: GetVelocityError: Calculate: diff --git a/subprojects/robotpy-wpimath/gen/kinematics/SwerveModuleState.yml b/subprojects/robotpy-wpimath/gen/kinematics/SwerveModuleState.yml index fca240ba..0d5c07f7 100644 --- a/subprojects/robotpy-wpimath/gen/kinematics/SwerveModuleState.yml +++ b/subprojects/robotpy-wpimath/gen/kinematics/SwerveModuleState.yml @@ -13,6 +13,10 @@ classes: methods: operator==: Optimize: + overloads: + const Rotation2d&: + const SwerveModuleState&, const Rotation2d&: + ignore: true inline_code: | cls_SwerveModuleState From 5cf3015d8acd8b1b23bdadcec9a54330b26c3b45 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 12 Oct 2024 10:13:01 -0400 Subject: [PATCH 23/30] Add Python 3.13 compatibility --- rdev.toml | 2 +- subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp | 3 ++- subprojects/robotpy-wpiutil/wpiutil/src/safethread_gil.cpp | 5 +++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/rdev.toml b/rdev.toml index 91be936a..8c102262 100644 --- a/rdev.toml +++ b/rdev.toml @@ -13,7 +13,7 @@ exclude_artifacts = [ "opencv-cpp" ] -robotpy_build_req = "<2025.0.0,~=2024.0.2" +robotpy_build_req = "<2025.0.0b1,~=2025.0.0a1" # # Subproject configuration diff --git a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp index 528f23be..f04b7714 100644 --- a/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp +++ b/subprojects/robotpy-wpilib/wpilib/src/rpy/Notifier.cpp @@ -15,6 +15,7 @@ #include "frc/Timer.h" #include +#include using namespace frc; using namespace pybind11::literals; @@ -58,7 +59,7 @@ PyNotifier::PyNotifier(std::function handler) { if (handler) handler(); } - if (_Py_IsFinalizing()) { + if (Py_IsFinalizing()) { release.disarm(); } }); diff --git a/subprojects/robotpy-wpiutil/wpiutil/src/safethread_gil.cpp b/subprojects/robotpy-wpiutil/wpiutil/src/safethread_gil.cpp index 9251c192..131d6fd4 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/src/safethread_gil.cpp +++ b/subprojects/robotpy-wpiutil/wpiutil/src/safethread_gil.cpp @@ -1,5 +1,6 @@ #include +#include #include using OnThreadStartFn = void *(*)(); @@ -17,7 +18,7 @@ struct SafeThreadState { std::atomic g_gilstate_managed = false; void *on_safe_thread_start() { - if (_Py_IsFinalizing() // python is shutting down + if (Py_IsFinalizing() // python is shutting down || !g_gilstate_managed.load() // python has shutdown) ) { return nullptr; @@ -37,7 +38,7 @@ void on_safe_thread_end(void *opaque) { // don't cleanup if it's unsafe to do so. Several possibilities here: if (!opaque // internal error? - || _Py_IsFinalizing() // python is shutting down + || Py_IsFinalizing() // python is shutting down || !g_gilstate_managed.load() // python has shutdown ) { return; From c81e45061fce78223d047ba8974026e9925e5317 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 12 Oct 2024 10:22:47 -0400 Subject: [PATCH 24/30] Updated dependencies - build-system.requires: robotpy-build<2025.0.0b1,~=2025.0.0a1 - lib updated to 2025.1.1-beta-1 --- rdev.toml | 2 +- subprojects/pyntcore/pyproject.toml | 4 ++-- subprojects/robotpy-apriltag/pyproject.toml | 4 ++-- subprojects/robotpy-cscore/pyproject.toml | 6 +++--- subprojects/robotpy-hal/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-ds-socket/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-gui/pyproject.toml | 4 ++-- subprojects/robotpy-halsim-ws/pyproject.toml | 6 +++--- subprojects/robotpy-romi/pyproject.toml | 4 ++-- subprojects/robotpy-wpilib/pyproject.toml | 4 ++-- subprojects/robotpy-wpimath/pyproject.toml | 4 ++-- subprojects/robotpy-wpinet/pyproject.toml | 4 ++-- subprojects/robotpy-wpiutil/pyproject.toml | 4 ++-- subprojects/robotpy-xrp/pyproject.toml | 6 +++--- 14 files changed, 30 insertions(+), 30 deletions(-) diff --git a/rdev.toml b/rdev.toml index 8c102262..86d7e6bc 100644 --- a/rdev.toml +++ b/rdev.toml @@ -5,7 +5,7 @@ [params] # wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/release" -wpilib_bin_version = "2025.0.0-alpha-2-21-g466a4a5" +wpilib_bin_version = "2025.1.1-beta-1" wpilib_bin_url = "https://frcmaven.wpi.edu/artifactory/development" # Don't update these artifacts diff --git a/subprojects/pyntcore/pyproject.toml b/subprojects/pyntcore/pyproject.toml index e6e1f6bd..19cf05b2 100644 --- a/subprojects/pyntcore/pyproject.toml +++ b/subprojects/pyntcore/pyproject.toml @@ -12,7 +12,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] @@ -37,7 +37,7 @@ scan_headers_ignore = [ artifact_id = "ntcore-cpp" group_id = "edu.wpi.first.ntcore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["ntcore"] diff --git a/subprojects/robotpy-apriltag/pyproject.toml b/subprojects/robotpy-apriltag/pyproject.toml index 0f9531dd..1068b52c 100644 --- a/subprojects/robotpy-apriltag/pyproject.toml +++ b/subprojects/robotpy-apriltag/pyproject.toml @@ -12,7 +12,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", ] @@ -40,7 +40,7 @@ scan_headers_ignore = [ artifact_id = "apriltag-cpp" group_id = "edu.wpi.first.apriltag" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["apriltag"] diff --git a/subprojects/robotpy-cscore/pyproject.toml b/subprojects/robotpy-cscore/pyproject.toml index 3cedb8b8..61a51e40 100644 --- a/subprojects/robotpy-cscore/pyproject.toml +++ b/subprojects/robotpy-cscore/pyproject.toml @@ -13,7 +13,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", "robotpy-wpinet~=2024.3.1", "pyntcore~=2024.3.1", @@ -30,7 +30,7 @@ update_init = [ artifact_id = "cscore-cpp" group_id = "edu.wpi.first.cscore" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["cscore"] @@ -38,7 +38,7 @@ libs = ["cscore"] artifact_id = "cameraserver-cpp" group_id = "edu.wpi.first.cameraserver" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["cameraserver"] diff --git a/subprojects/robotpy-hal/pyproject.toml b/subprojects/robotpy-hal/pyproject.toml index eed8d18e..b9f78b47 100644 --- a/subprojects/robotpy-hal/pyproject.toml +++ b/subprojects/robotpy-hal/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", ] @@ -53,7 +53,7 @@ artifact_id = "hal-cpp" group_id = "edu.wpi.first.hal" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["wpiHal"] diff --git a/subprojects/robotpy-halsim-ds-socket/pyproject.toml b/subprojects/robotpy-halsim-ds-socket/pyproject.toml index a07c1a25..0050c316 100644 --- a/subprojects/robotpy-halsim-ds-socket/pyproject.toml +++ b/subprojects/robotpy-halsim-ds-socket/pyproject.toml @@ -15,7 +15,7 @@ robotpysimext = ["ds-socket = halsim_ds_socket"] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-hal~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] @@ -28,7 +28,7 @@ artifact_id = "halsim_ds_socket" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" dlopenlibs = ["halsim_ds_socket"] diff --git a/subprojects/robotpy-halsim-gui/pyproject.toml b/subprojects/robotpy-halsim-gui/pyproject.toml index 8d21cdbd..8dcc49b2 100644 --- a/subprojects/robotpy-halsim-gui/pyproject.toml +++ b/subprojects/robotpy-halsim-gui/pyproject.toml @@ -14,7 +14,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", "robotpy-hal~=2024.3.1", @@ -30,7 +30,7 @@ artifact_id = "halsim_gui" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" dlopenlibs = ["halsim_gui"] diff --git a/subprojects/robotpy-halsim-ws/pyproject.toml b/subprojects/robotpy-halsim-ws/pyproject.toml index b657b820..a2eb24b3 100644 --- a/subprojects/robotpy-halsim-ws/pyproject.toml +++ b/subprojects/robotpy-halsim-ws/pyproject.toml @@ -19,7 +19,7 @@ robotpysimext = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-hal~=2024.3.1", "robotpy-wpinet~=2024.3.1", ] @@ -32,7 +32,7 @@ artifact_id = "halsim_ws_server" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" dlopenlibs = ["halsim_ws_server"] @@ -45,7 +45,7 @@ artifact_id = "halsim_ws_client" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" dlopenlibs = ["halsim_ws_client"] diff --git a/subprojects/robotpy-romi/pyproject.toml b/subprojects/robotpy-romi/pyproject.toml index de5a195e..a5f784e1 100644 --- a/subprojects/robotpy-romi/pyproject.toml +++ b/subprojects/robotpy-romi/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "wpilib~=2024.3.1" ] @@ -39,5 +39,5 @@ artifact_id = "romiVendordep-cpp" group_id = "edu.wpi.first.romiVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["romiVendordep"] diff --git a/subprojects/robotpy-wpilib/pyproject.toml b/subprojects/robotpy-wpilib/pyproject.toml index 61b9af47..911cf19b 100644 --- a/subprojects/robotpy-wpilib/pyproject.toml +++ b/subprojects/robotpy-wpilib/pyproject.toml @@ -18,7 +18,7 @@ robotpy = ["run = wpilib._impl.start:Main"] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", "robotpy-wpimath~=2024.3.1", "robotpy-hal~=2024.3.1", @@ -69,7 +69,7 @@ scan_headers_ignore = [ artifact_id = "wpilibc-cpp" group_id = "edu.wpi.first.wpilibc" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["wpilibc"] diff --git a/subprojects/robotpy-wpimath/pyproject.toml b/subprojects/robotpy-wpimath/pyproject.toml index 3c474cbf..0ef3d93b 100644 --- a/subprojects/robotpy-wpimath/pyproject.toml +++ b/subprojects/robotpy-wpimath/pyproject.toml @@ -11,7 +11,7 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", # "numpy", # broken in raspbian CI ] @@ -70,7 +70,7 @@ scan_headers_ignore = [ artifact_id = "wpimath-cpp" group_id = "edu.wpi.first.wpimath" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["wpimath"] diff --git a/subprojects/robotpy-wpinet/pyproject.toml b/subprojects/robotpy-wpinet/pyproject.toml index 91e34781..15aa2827 100644 --- a/subprojects/robotpy-wpinet/pyproject.toml +++ b/subprojects/robotpy-wpinet/pyproject.toml @@ -20,7 +20,7 @@ artifact_id = "wpinet-cpp" group_id = "edu.wpi.first.wpinet" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["wpinet"] @@ -41,6 +41,6 @@ install_requires = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "robotpy-wpiutil~=2024.3.1", ] diff --git a/subprojects/robotpy-wpiutil/pyproject.toml b/subprojects/robotpy-wpiutil/pyproject.toml index 2f112a0d..6a8eedf3 100644 --- a/subprojects/robotpy-wpiutil/pyproject.toml +++ b/subprojects/robotpy-wpiutil/pyproject.toml @@ -9,7 +9,7 @@ install_requires = [] [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", ] [tool.robotpy-build] @@ -47,7 +47,7 @@ artifact_id = "wpiutil-cpp" group_id = "edu.wpi.first.wpiutil" repo_url = "https://frcmaven.wpi.edu/artifactory/development" # repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["wpiutil"] diff --git a/subprojects/robotpy-xrp/pyproject.toml b/subprojects/robotpy-xrp/pyproject.toml index 311eb349..102bb5bf 100644 --- a/subprojects/robotpy-xrp/pyproject.toml +++ b/subprojects/robotpy-xrp/pyproject.toml @@ -16,7 +16,7 @@ robotpysimext = [ [build-system] requires = [ - "robotpy-build<2025.0.0,~=2024.0.2", + "robotpy-build<2025.0.0b1,~=2025.0.0a1", "wpilib~=2024.3.1" ] @@ -48,7 +48,7 @@ artifact_id = "xrpVendordep-cpp" group_id = "edu.wpi.first.xrpVendordep" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" libs = ["xrpVendordep"] [tool.robotpy-build.wrappers."xrp.extension".maven_lib_download] @@ -56,7 +56,7 @@ artifact_id = "halsim_xrp" group_id = "edu.wpi.first.halsim" # repo_url = "https://frcmaven.wpi.edu/artifactory/release" repo_url = "https://frcmaven.wpi.edu/artifactory/development" -version = "2025.0.0-alpha-2-21-g466a4a5" +version = "2025.1.1-beta-1" dlopenlibs = ["halsim_xrp"] From 089d35c6bf96f3575fd96d803ee768676ceae607 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 12 Oct 2024 22:38:10 -0400 Subject: [PATCH 25/30] Fix ct_string type caster for updated pybind11 --- .../type_casters/wpi_ct_string_type_caster.h | 40 +++++++++++++------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/subprojects/robotpy-wpiutil/wpiutil/src/type_casters/wpi_ct_string_type_caster.h b/subprojects/robotpy-wpiutil/wpiutil/src/type_casters/wpi_ct_string_type_caster.h index cc658457..702afcf5 100644 --- a/subprojects/robotpy-wpiutil/wpiutil/src/type_casters/wpi_ct_string_type_caster.h +++ b/subprojects/robotpy-wpiutil/wpiutil/src/type_casters/wpi_ct_string_type_caster.h @@ -8,9 +8,9 @@ namespace pybind11 { namespace detail { -template -struct type_caster> { - using str_type = wpi::ct_string; +template +struct type_caster> { + using str_type = wpi::ct_string; PYBIND11_TYPE_CASTER(str_type, const_name(PYBIND11_STRING_NAME)); // TODO @@ -21,19 +21,35 @@ struct type_caster> { static handle cast(const str_type& src, py::return_value_policy policy, py::handle parent) { - const char *buffer = reinterpret_cast(src.data()); - auto nbytes = ssize_t(src.size() * sizeof(Char)); - handle s; - if (policy == return_value_policy::_return_as_bytes) { - s = PyBytes_FromStringAndSize(buffer, nbytes); - } else { - s = PyUnicode_DecodeUTF8(buffer, nbytes, nullptr); - } + const char *buffer = reinterpret_cast(src.data()); + auto nbytes = ssize_t(src.size() * sizeof(CharT)); + handle s = decode_utfN(buffer, nbytes); if (!s) { throw error_already_set(); } return s; - } + } + + // copied from py::string_caster + static constexpr size_t UTF_N = 8 * sizeof(CharT); + + static handle decode_utfN(const char *buffer, ssize_t nbytes) { +#if !defined(PYPY_VERSION) + return UTF_N == 8 ? PyUnicode_DecodeUTF8(buffer, nbytes, nullptr) + : UTF_N == 16 ? PyUnicode_DecodeUTF16(buffer, nbytes, nullptr, nullptr) + : PyUnicode_DecodeUTF32(buffer, nbytes, nullptr, nullptr); +#else + // PyPy segfaults when on PyUnicode_DecodeUTF16 (and possibly on PyUnicode_DecodeUTF32 as + // well), so bypass the whole thing by just passing the encoding as a string value, which + // works properly: + return PyUnicode_Decode(buffer, + nbytes, + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr); +#endif + } }; From fe23dac30ceca0cdc6fa86575c43220a183e682e Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Sat, 12 Oct 2024 22:47:51 -0400 Subject: [PATCH 26/30] Updates for wpilib --- subprojects/robotpy-wpilib/gen/LEDPattern.yml | 7 +++++-- subprojects/robotpy-wpilib/gen/SensorUtil.yml | 5 +++++ subprojects/robotpy-wpilib/gen/simulation/DCMotorSim.yml | 3 +-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/subprojects/robotpy-wpilib/gen/LEDPattern.yml b/subprojects/robotpy-wpilib/gen/LEDPattern.yml index 641ec68e..0d0369ec 100644 --- a/subprojects/robotpy-wpilib/gen/LEDPattern.yml +++ b/subprojects/robotpy-wpilib/gen/LEDPattern.yml @@ -4,7 +4,10 @@ classes: LEDPattern: attributes: kOff: + enums: + GradientType: methods: + 'Off': LEDPattern: ApplyTo: overloads: @@ -33,7 +36,7 @@ classes: ignore: true Gradient: overloads: - std::span: - std::initializer_list: + GradientType, std::span: + GradientType, std::initializer_list: ignore: true Rainbow: diff --git a/subprojects/robotpy-wpilib/gen/SensorUtil.yml b/subprojects/robotpy-wpilib/gen/SensorUtil.yml index 83b1d478..7b9de874 100644 --- a/subprojects/robotpy-wpilib/gen/SensorUtil.yml +++ b/subprojects/robotpy-wpilib/gen/SensorUtil.yml @@ -27,3 +27,8 @@ classes: CheckPDPModule: GetDefaultCTREPCMModule: GetDefaultREVPHModule: + GetNumDigitalChannels: + GetNumAnalogInputs: + GetNumAnalogOuputs: + GetNumPwmChannels: + GetNumRelayChannels: diff --git a/subprojects/robotpy-wpilib/gen/simulation/DCMotorSim.yml b/subprojects/robotpy-wpilib/gen/simulation/DCMotorSim.yml index 8cef12a3..90bfcb93 100644 --- a/subprojects/robotpy-wpilib/gen/simulation/DCMotorSim.yml +++ b/subprojects/robotpy-wpilib/gen/simulation/DCMotorSim.yml @@ -7,11 +7,10 @@ classes: methods: DCMotorSim: overloads: - const LinearSystem<2, 1, 2>&, const DCMotor&, double, const std::array&: + const LinearSystem<2, 1, 2>&, const DCMotor&, const std::array&: param_override: plant: x_type: frc::LinearSystem<2,1,2> - const DCMotor&, double, units::kilogram_square_meter_t, const std::array&: SetState: GetAngularPosition: GetAngularVelocity: From 971f94fc854a4393acc4e365880a264d237b16f0 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Tue, 15 Oct 2024 02:13:23 -0400 Subject: [PATCH 27/30] Install MarkupSafe separately because it's sdist is broken --- .github/workflows/dist.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 9445f071..7b7ee8f1 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -221,7 +221,13 @@ jobs: run: | pwd /usr/bin/git config --global --add safe.directory $(pwd) - + + # See https://github.com/pallets/markupsafe/issues/475 + - name: Install MarkupSafe + shell: bash + run: | + /build/venv/bin/cross-pip install --no-build-isolation "markupsafe; python_version < '3.12'" + - name: Install deps shell: bash run: | From b6aff1589fba637b962a3a4db2a520f5b9a15f3e Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Wed, 16 Oct 2024 20:59:11 -0400 Subject: [PATCH 28/30] Switch to 2025 docker images --- .github/workflows/dist.yml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 17ded70e..4f4d5b77 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -44,7 +44,7 @@ jobs: - uses: actions/setup-python@v5 with: - python-version: "3.12" + python-version: "3.13" - name: Install deps shell: bash @@ -70,11 +70,11 @@ jobs: matrix: os: ["ubuntu-22.04", "macos-13", "windows-2022"] python_version: - - '3.8' - '3.9' - '3.10' - '3.11' - '3.12' + - '3.13' steps: - uses: actions/checkout@v4 @@ -169,30 +169,30 @@ jobs: max-parallel: ${{ fromJSON(needs.setup_concurrency.outputs.max-parallel).v }} matrix: os: - - container: wpilib/roborio-cross-ubuntu:2024-22.04-py312 + - container: wpilib/roborio-cross-ubuntu:2025-22.04-py313 name: roborio - - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04-py38 - name: raspbian-py38 - - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04-py39 + - container: wpilib/raspbian-cross-ubuntu:2025-bullseye-22.04-py39 name: raspbian-py39 - - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04-py310 + - container: wpilib/raspbian-cross-ubuntu:2025-bullseye-22.04-py310 name: raspbian-py310 - - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04-py311 + - container: wpilib/raspbian-cross-ubuntu:2025-bullseye-22.04-py311 name: raspbian-py311 - - container: wpilib/raspbian-cross-ubuntu:bullseye-22.04-py312 + - container: wpilib/raspbian-cross-ubuntu:2025-bullseye-22.04-py312 name: raspbian-py312 - - - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py38 - name: raspbian-aarch64-py38 - - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py39 + - container: wpilib/raspbian-cross-ubuntu:2025-bullseye-22.04-py313 + name: raspbian-py313 + + - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py39 name: raspbian-aarch64-py39 - - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py310 + - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py310 name: raspbian-aarch64-py310 - - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py311 + - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py311 name: raspbian-aarch64-py311 - - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py312 + - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py312 name: raspbian-aarch64-py312 + - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py313 + name: raspbian-aarch64-py313 container: image: "${{ matrix.os.container }}" From c730cf63191bccd7c636350bb9be33651c68c0c6 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Wed, 16 Oct 2024 21:11:00 -0400 Subject: [PATCH 29/30] Fix container name for now --- .github/workflows/dist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 4f4d5b77..4f8f0c02 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -191,7 +191,7 @@ jobs: name: raspbian-aarch64-py311 - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py312 name: raspbian-aarch64-py312 - - container: wpilib/aarch64-cross-ubuntu:2025-bullseye-22.04-py313 + - container: wpilib/aarch64-cross-ubuntu:bullseye-22.04-py313 name: raspbian-aarch64-py313 container: From 5b9c72ba66ff2fd2359992467bc02aeef65b34c5 Mon Sep 17 00:00:00 2001 From: Dustin Spicuzza Date: Wed, 16 Oct 2024 23:35:38 -0400 Subject: [PATCH 30/30] Update numpy version --- .github/workflows/dist.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/dist.yml b/.github/workflows/dist.yml index 4f8f0c02..e6b365bc 100644 --- a/.github/workflows/dist.yml +++ b/.github/workflows/dist.yml @@ -114,7 +114,7 @@ jobs: - name: Install numpy (needed for stubgen but broken in raspbian CI) shell: bash run: | - python -m pip --disable-pip-version-check install 'numpy<2' + python -m pip --disable-pip-version-check install numpy - name: Build + test wheels shell: bash