From 6b35dfd1bb6d53763c0663cedcb189f5aa12c51d Mon Sep 17 00:00:00 2001 From: elma Date: Sun, 17 Aug 2025 14:27:19 +0300 Subject: [PATCH 1/5] initial commit, every feature in issue #20 implemented --- src/main/java/frc/kelrotlib/leds/Led.java | 47 ++++++++++--------- src/main/java/frc/robot/Constants.java | 6 +++ src/main/java/frc/robot/RobotContainer.java | 8 ++-- .../frc/robot/subsystems/LedSubsystem.java | 5 +- 4 files changed, 36 insertions(+), 30 deletions(-) diff --git a/src/main/java/frc/kelrotlib/leds/Led.java b/src/main/java/frc/kelrotlib/leds/Led.java index 17b242e..cacda97 100644 --- a/src/main/java/frc/kelrotlib/leds/Led.java +++ b/src/main/java/frc/kelrotlib/leds/Led.java @@ -3,8 +3,6 @@ import static edu.wpi.first.units.Units.MetersPerSecond; import static edu.wpi.first.units.Units.Seconds; -import java.util.HashMap; - import edu.wpi.first.wpilibj.AddressableLED; import edu.wpi.first.wpilibj.AddressableLEDBuffer; import edu.wpi.first.wpilibj.AddressableLEDBufferView; @@ -17,50 +15,55 @@ public class Led extends SubsystemBase{ //a Java inheritance example private AddressableLED m_led; private AddressableLEDBuffer m_buffer; - private HashMap m_groupList; - private HashMap m_patternList; - private LEDPattern k_defaultPattern = LEDPattern.solid(Color.kBlack); + private AddressableLEDBufferView[] m_groupList; + private LEDPattern[] m_patternList; + + private LEDPattern k_defaultPattern; + private final int[][] k_ledGroups; - public Led() { + public Led(int[][] ledGroups) { m_led = new AddressableLED(LedConstants.kLedPort); //every variable you might change later (ports, length etc.) should be added to Constants.java* m_buffer = new AddressableLEDBuffer(LedConstants.kLedLength); // * this way every port and important variable is in one place. m_led.setLength(LedConstants.kLedLength); //setting the length takes a lot of load so do it only one time when possible m_led.start(); - m_groupList = new HashMap(); //I decided to use Integers for the keys as it is much more straight-forward, in future uses the keys can be String's for more complicated group identification needs. - m_patternList = new HashMap(); //For this version of grouping we need to store previous patterns for each group + k_defaultPattern = LEDPattern.solid(Color.kBlack); + k_ledGroups = ledGroups; + for (int[] i : k_ledGroups) { //create groups based on the ledGroups array + createGroup(i[0], i[1]); + } setDefaultCommand(runPattern(k_defaultPattern).withName("Off")); //set all leds to off/black on start } - public void createGroup(int startingIndex, int endingIndex, Integer groupID) { //infinite amount of groups creatable, without complicating the code + public void createGroup(int startingIndex, int endingIndex) { AddressableLEDBufferView group = m_buffer.createView(startingIndex, endingIndex); //create new group(view) - m_groupList.put(groupID, group); - m_patternList.put(groupID, k_defaultPattern); //initially set the defaultPattern, so the runPattern command doesn't break + m_groupList[m_groupList.length] = group; //add the group to the groupList + m_patternList[m_patternList.length] = k_defaultPattern; //add the default pattern to the patternList } - public void setSolidColor(Color color, Integer[] groupIDs){ + public void setSolidColor(Color color, int[] groupIndexes){ LEDPattern solidColorPattern = LEDPattern.solid(color); - for (int i = 0; i < groupIDs.length; i++) { //update the latest pattern for every LED group given - m_patternList.replace(groupIDs[i], solidColorPattern); //I love hashmap it is just so cool + for (int i = 0; i < groupIndexes.length; i++) { //update the latest pattern for every LED group given + m_patternList[groupIndexes[i]] = solidColorPattern; //replace the pattern for the groupID with the new solid color pattern } runPattern(); } - public void setBlinkColor(Color color, double interval, Integer[] groupIDs){ + public void setBlinkColor(Color color, double interval, int[] groupIndexes){ LEDPattern base = LEDPattern.solid(color); LEDPattern blinkPattern = base.blink(Seconds.of(interval)); //synchronised blink, wpilib also has support for asynchronised blink - for (int i = 0; i < groupIDs.length; i++) { - m_patternList.replace(groupIDs[i], blinkPattern); + for (int i = 0; i < groupIndexes.length; i++) { + m_patternList[groupIndexes[i]] = blinkPattern; } runPattern(); } - public void rainbow(Integer[] groupIDs){ + public void rainbow(int[] groupIndexes){ LEDPattern rainbow = LEDPattern.rainbow(255, 128); //all hues at maximum saturation and *half* brightness LEDPattern scrollingRainbow = rainbow.scrollAtAbsoluteSpeed(MetersPerSecond.of(1), LedConstants.kLedSpacing); //moves/scrolls the effect at a speed of 1 meter per second - for (int i = 0; i < groupIDs.length; i++) { - m_patternList.replace(groupIDs[i], scrollingRainbow); + for (int i = 0; i < groupIndexes.length; i++) { + m_patternList[groupIndexes[i]] = scrollingRainbow; } runPattern(); } @@ -71,8 +74,8 @@ public void turnOff(){ private Command runPattern(){ //A command is used as it doesn't allow actions to run simultaneously, for this usage it is crucial, because we need to stop the previous patterns and start the new ones. return run(() -> { - for (Integer i : m_groupList.keySet()) { //parsing through every key in the groupList HashMap - m_patternList.get(i).applyTo(m_groupList.get(i)); //getting every setted pattern and applying it to the ID'd LED Group + for (int i = 0; i < m_groupList.length; i++) { + m_patternList[i].applyTo(m_groupList[i]); //apply the pattern to the group } }); } diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 424662f..1cbe054 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -13,6 +13,12 @@ public static class LedConstants { public static final int kLedPort = 6; //PWM port on RoborIO public static final int kLedLength = 60; //led count public static final Distance kLedSpacing = Meters.of(1/ 60.0); // density of 120 LEDs per meter + public static final int[][] kledGroups = { + new int[] {0,1}, //group 0 + new int[] {2,3}, // group 1 + new int[] {4,5} // group 2 + }; + } } \ No newline at end of file diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index 19761de..fa84490 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -4,17 +4,15 @@ package frc.robot; +import frc.robot.Constants.LedConstants; import frc.robot.subsystems.LedSubsystem; import edu.wpi.first.wpilibj.util.Color; import edu.wpi.first.wpilibj2.command.Command; public class RobotContainer { - private final LedSubsystem m_led = new LedSubsystem(); + private final LedSubsystem m_led = new LedSubsystem(LedConstants.kledGroups); public RobotContainer() { - m_led.createGroup(0, 29, 1); //indexing: in a 60 led strip, first LED is index 0 and the last led is index 59 - m_led.createGroup(30, 59, 2); - - m_led.setSolidColor(Color.kFirstBlue, new Integer[] {1,2}); //The library Color includes many color presets, but it is also possible to use RGB values to create "Color"s + m_led.setSolidColor(Color.kFirstBlue, new int[] {1,2}); //The library Color includes many color presets, but it is also possible to use RGB values to create "Color"s configureBindings(); } diff --git a/src/main/java/frc/robot/subsystems/LedSubsystem.java b/src/main/java/frc/robot/subsystems/LedSubsystem.java index 52f3998..33bdb4e 100644 --- a/src/main/java/frc/robot/subsystems/LedSubsystem.java +++ b/src/main/java/frc/robot/subsystems/LedSubsystem.java @@ -6,8 +6,7 @@ public class LedSubsystem extends Led { // Inherits all methods and properties from the KelrotLib Led class // You can add additional methods or override existing ones if needed - public LedSubsystem() { - super(); // Call the constructor of the parent class - // Additional initialization if necessary + public LedSubsystem(int[][] ledGroups) { + super(ledGroups); } } From a0a858c04e3e0f1361178a12611ecdc42dffa2f8 Mon Sep 17 00:00:00 2001 From: elma Date: Sun, 17 Aug 2025 19:06:32 +0300 Subject: [PATCH 2/5] fix: removed k_ledGroups, fixed NullPointerException error by initializing arrays with required size beforehand and changed the name groupIndexes back to groupIDS as it caused confusion. --- src/main/java/frc/kelrotlib/leds/Led.java | 26 ++++++++++++----------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/src/main/java/frc/kelrotlib/leds/Led.java b/src/main/java/frc/kelrotlib/leds/Led.java index cacda97..70ddb10 100644 --- a/src/main/java/frc/kelrotlib/leds/Led.java +++ b/src/main/java/frc/kelrotlib/leds/Led.java @@ -19,7 +19,6 @@ public class Led extends SubsystemBase{ //a Java inheritance example private LEDPattern[] m_patternList; private LEDPattern k_defaultPattern; - private final int[][] k_ledGroups; public Led(int[][] ledGroups) { m_led = new AddressableLED(LedConstants.kLedPort); //every variable you might change later (ports, length etc.) should be added to Constants.java* @@ -28,8 +27,10 @@ public Led(int[][] ledGroups) { m_led.start(); k_defaultPattern = LEDPattern.solid(Color.kBlack); - k_ledGroups = ledGroups; - for (int[] i : k_ledGroups) { //create groups based on the ledGroups array + + m_groupList = new AddressableLEDBufferView[ledGroups.length]; //create a new groupList with the same length as the ledGroups array + m_patternList = new LEDPattern[ledGroups.length]; //create a new patternList with the same length as the ledGroups array + for (int[] i : ledGroups) { //create groups based on the ledGroups array createGroup(i[0], i[1]); } @@ -42,28 +43,29 @@ public void createGroup(int startingIndex, int endingIndex) { m_patternList[m_patternList.length] = k_defaultPattern; //add the default pattern to the patternList } - public void setSolidColor(Color color, int[] groupIndexes){ + public void setSolidColor(Color color, int[] groupIDs){ LEDPattern solidColorPattern = LEDPattern.solid(color); - for (int i = 0; i < groupIndexes.length; i++) { //update the latest pattern for every LED group given - m_patternList[groupIndexes[i]] = solidColorPattern; //replace the pattern for the groupID with the new solid color pattern + for (int i = 0; i < groupIDs.length; i++) { //update the latest pattern for every LED group given + m_patternList[groupIDs[i]] = solidColorPattern; //replace the pattern for the groupID with the new solid color pattern } runPattern(); } - public void setBlinkColor(Color color, double interval, int[] groupIndexes){ + public void setBlinkColor(Color color, double interval, int[] groupIDs){ LEDPattern base = LEDPattern.solid(color); LEDPattern blinkPattern = base.blink(Seconds.of(interval)); //synchronised blink, wpilib also has support for asynchronised blink - for (int i = 0; i < groupIndexes.length; i++) { - m_patternList[groupIndexes[i]] = blinkPattern; + for (int i = 0; i < groupIDs.length; i++) { + m_patternList[groupIDs[i]] = blinkPattern; } + runPattern(); } - public void rainbow(int[] groupIndexes){ + public void rainbow(int[] groupIDs){ LEDPattern rainbow = LEDPattern.rainbow(255, 128); //all hues at maximum saturation and *half* brightness LEDPattern scrollingRainbow = rainbow.scrollAtAbsoluteSpeed(MetersPerSecond.of(1), LedConstants.kLedSpacing); //moves/scrolls the effect at a speed of 1 meter per second - for (int i = 0; i < groupIndexes.length; i++) { - m_patternList[groupIndexes[i]] = scrollingRainbow; + for (int i = 0; i < groupIDs.length; i++) { + m_patternList[groupIDs[i]] = scrollingRainbow; } runPattern(); } From 43f7c2715eac9b628b4cdff4a7c3be5a63932ec3 Mon Sep 17 00:00:00 2001 From: elma Date: Sun, 17 Aug 2025 19:49:47 +0300 Subject: [PATCH 3/5] fix: ArrayIndexOutOfBoundsException error caused by previosly setted size --- src/main/java/frc/kelrotlib/leds/Led.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/frc/kelrotlib/leds/Led.java b/src/main/java/frc/kelrotlib/leds/Led.java index 70ddb10..d16e9a9 100644 --- a/src/main/java/frc/kelrotlib/leds/Led.java +++ b/src/main/java/frc/kelrotlib/leds/Led.java @@ -30,17 +30,17 @@ public Led(int[][] ledGroups) { m_groupList = new AddressableLEDBufferView[ledGroups.length]; //create a new groupList with the same length as the ledGroups array m_patternList = new LEDPattern[ledGroups.length]; //create a new patternList with the same length as the ledGroups array - for (int[] i : ledGroups) { //create groups based on the ledGroups array - createGroup(i[0], i[1]); + for (int i = 0; i < ledGroups.length; i++) { + createGroup(ledGroups[i][0], ledGroups[i][1], i); } setDefaultCommand(runPattern(k_defaultPattern).withName("Off")); //set all leds to off/black on start } - public void createGroup(int startingIndex, int endingIndex) { + public void createGroup(int startingIndex, int endingIndex, int groupID) { AddressableLEDBufferView group = m_buffer.createView(startingIndex, endingIndex); //create new group(view) - m_groupList[m_groupList.length] = group; //add the group to the groupList - m_patternList[m_patternList.length] = k_defaultPattern; //add the default pattern to the patternList + m_groupList[groupID] = group; //add the group to the groupList + m_patternList[groupID] = k_defaultPattern; //add the default pattern to the patternList } public void setSolidColor(Color color, int[] groupIDs){ From 0a5b2d45ddda28aa838262c6066e7fe61ac891ba Mon Sep 17 00:00:00 2001 From: elma Date: Sat, 30 Aug 2025 19:38:00 +0300 Subject: [PATCH 4/5] fixed not working in sim (and irl), schedules runPattern command and functions properly in disabled mod. Works in simulation finally. --- src/main/java/frc/kelrotlib/leds/Led.java | 21 ++++++++++----------- src/main/java/frc/robot/Constants.java | 8 ++++---- src/main/java/frc/robot/RobotContainer.java | 7 +++++-- 3 files changed, 19 insertions(+), 17 deletions(-) diff --git a/src/main/java/frc/kelrotlib/leds/Led.java b/src/main/java/frc/kelrotlib/leds/Led.java index d16e9a9..d988631 100644 --- a/src/main/java/frc/kelrotlib/leds/Led.java +++ b/src/main/java/frc/kelrotlib/leds/Led.java @@ -48,7 +48,7 @@ public void setSolidColor(Color color, int[] groupIDs){ for (int i = 0; i < groupIDs.length; i++) { //update the latest pattern for every LED group given m_patternList[groupIDs[i]] = solidColorPattern; //replace the pattern for the groupID with the new solid color pattern } - runPattern(); + runPattern().schedule(); } public void setBlinkColor(Color color, double interval, int[] groupIDs){ @@ -57,8 +57,7 @@ public void setBlinkColor(Color color, double interval, int[] groupIDs){ for (int i = 0; i < groupIDs.length; i++) { m_patternList[groupIDs[i]] = blinkPattern; } - - runPattern(); + runPattern().schedule(); } public void rainbow(int[] groupIDs){ @@ -67,33 +66,33 @@ public void rainbow(int[] groupIDs){ for (int i = 0; i < groupIDs.length; i++) { m_patternList[groupIDs[i]] = scrollingRainbow; } - runPattern(); + runPattern().schedule(); } public void turnOff(){ - runPattern(k_defaultPattern); + setSolidColor(Color.kBlack, new int[] {0, 1, 2}); //turn off all LEDs by setting them to black } - private Command runPattern(){ //A command is used as it doesn't allow actions to run simultaneously, for this usage it is crucial, because we need to stop the previous patterns and start the new ones. + public Command runPattern(){ //A command is used as it doesn't allow actions to run simultaneously, for this usage it is crucial, because we need to stop the previous patterns and start the new ones. return run(() -> { for (int i = 0; i < m_groupList.length; i++) { m_patternList[i].applyTo(m_groupList[i]); //apply the pattern to the group } - }); + }).ignoringDisable(true); } - private Command runPattern(LEDPattern pattern) { //might get removed later. + private Command runPattern(LEDPattern pattern) { return run(() -> { pattern.applyTo(m_buffer); - }); + }).ignoringDisable(true); } @Override - public void periodic() { //update the data every 20ms + public void periodic() { m_led.setData(m_buffer); } @Override public void simulationPeriodic() { } -} +} \ No newline at end of file diff --git a/src/main/java/frc/robot/Constants.java b/src/main/java/frc/robot/Constants.java index 1cbe054..e59aa61 100644 --- a/src/main/java/frc/robot/Constants.java +++ b/src/main/java/frc/robot/Constants.java @@ -12,11 +12,11 @@ public final class Constants { public static class LedConstants { public static final int kLedPort = 6; //PWM port on RoborIO public static final int kLedLength = 60; //led count - public static final Distance kLedSpacing = Meters.of(1/ 60.0); // density of 120 LEDs per meter + public static final Distance kLedSpacing = Meters.of(1/ 60.0); // density of 60 LEDs per meter public static final int[][] kledGroups = { - new int[] {0,1}, //group 0 - new int[] {2,3}, // group 1 - new int[] {4,5} // group 2 + new int[] {0,19}, //group 0 + new int[] {20,39}, // group 1 + new int[] {40,59} // group 2 }; } diff --git a/src/main/java/frc/robot/RobotContainer.java b/src/main/java/frc/robot/RobotContainer.java index fa84490..ca079c5 100644 --- a/src/main/java/frc/robot/RobotContainer.java +++ b/src/main/java/frc/robot/RobotContainer.java @@ -12,14 +12,17 @@ public class RobotContainer { private final LedSubsystem m_led = new LedSubsystem(LedConstants.kledGroups); public RobotContainer() { - m_led.setSolidColor(Color.kFirstBlue, new int[] {1,2}); //The library Color includes many color presets, but it is also possible to use RGB values to create "Color"s - + m_led.setBlinkColor(Color.kRed, 3, new int[]{0,1,2}); configureBindings(); } private void configureBindings() { } + public LedSubsystem getLedSubsystem() { + return m_led; + } + public Command getAutonomousCommand() { return null; } From c47d1c2679a1d76dc3f23a7ec1c0a16abe507896 Mon Sep 17 00:00:00 2001 From: recepsirin0 Date: Thu, 13 Nov 2025 23:03:29 +0300 Subject: [PATCH 5/5] Added vendordeps --- vendordeps/AdvantageKit.json | 35 +++ vendordeps/PathplannerLib.json | 38 +++ vendordeps/Phoenix6.json | 449 +++++++++++++++++++++++++++++++++ vendordeps/REVLib.json | 71 ++++++ vendordeps/Studica.json | 71 ++++++ vendordeps/URCL.json | 65 +++++ vendordeps/photonlib.json | 71 ++++++ 7 files changed, 800 insertions(+) create mode 100644 vendordeps/AdvantageKit.json create mode 100644 vendordeps/PathplannerLib.json create mode 100644 vendordeps/Phoenix6.json create mode 100644 vendordeps/REVLib.json create mode 100644 vendordeps/Studica.json create mode 100644 vendordeps/URCL.json create mode 100644 vendordeps/photonlib.json diff --git a/vendordeps/AdvantageKit.json b/vendordeps/AdvantageKit.json new file mode 100644 index 0000000..2707c2b --- /dev/null +++ b/vendordeps/AdvantageKit.json @@ -0,0 +1,35 @@ +{ + "fileName": "AdvantageKit.json", + "name": "AdvantageKit", + "version": "4.1.2", + "uuid": "d820cc26-74e3-11ec-90d6-0242ac120003", + "frcYear": "2025", + "mavenUrls": [ + "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" + ], + "jsonUrl": "https://github.com/Mechanical-Advantage/AdvantageKit/releases/latest/download/AdvantageKit.json", + "javaDependencies": [ + { + "groupId": "org.littletonrobotics.akit", + "artifactId": "akit-java", + "version": "4.1.2" + } + ], + "jniDependencies": [ + { + "groupId": "org.littletonrobotics.akit", + "artifactId": "akit-wpilibio", + "version": "4.1.2", + "skipInvalidPlatforms": false, + "isJar": false, + "validPlatforms": [ + "linuxathena", + "linuxx86-64", + "linuxarm64", + "osxuniversal", + "windowsx86-64" + ] + } + ], + "cppDependencies": [] +} diff --git a/vendordeps/PathplannerLib.json b/vendordeps/PathplannerLib.json new file mode 100644 index 0000000..6ad6a51 --- /dev/null +++ b/vendordeps/PathplannerLib.json @@ -0,0 +1,38 @@ +{ + "fileName": "PathplannerLib.json", + "name": "PathplannerLib", + "version": "2025.2.6", + "uuid": "1b42324f-17c6-4875-8e77-1c312bc8c786", + "frcYear": "2025", + "mavenUrls": [ + "https://3015rangerrobotics.github.io/pathplannerlib/repo" + ], + "jsonUrl": "https://3015rangerrobotics.github.io/pathplannerlib/PathplannerLib.json", + "javaDependencies": [ + { + "groupId": "com.pathplanner.lib", + "artifactId": "PathplannerLib-java", + "version": "2025.2.6" + } + ], + "jniDependencies": [], + "cppDependencies": [ + { + "groupId": "com.pathplanner.lib", + "artifactId": "PathplannerLib-cpp", + "version": "2025.2.6", + "libName": "PathplannerLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "osxuniversal", + "linuxathena", + "linuxarm32", + "linuxarm64" + ] + } + ] +} diff --git a/vendordeps/Phoenix6.json b/vendordeps/Phoenix6.json new file mode 100644 index 0000000..f378c13 --- /dev/null +++ b/vendordeps/Phoenix6.json @@ -0,0 +1,449 @@ +{ + "fileName": "Phoenix6-frc2025-latest.json", + "name": "CTRE-Phoenix (v6)", + "version": "25.3.1", + "frcYear": "2025", + "uuid": "e995de00-2c64-4df5-8831-c1441420ff19", + "mavenUrls": [ + "https://maven.ctr-electronics.com/release/" + ], + "jsonUrl": "https://maven.ctr-electronics.com/release/com/ctre/phoenix6/latest/Phoenix6-frc2025-latest.json", + "conflictsWith": [ + { + "uuid": "e7900d8d-826f-4dca-a1ff-182f658e98af", + "errorMessage": "Users can not have both the replay and regular Phoenix 6 vendordeps in their robot program.", + "offlineFileName": "Phoenix6-replay-frc2025-latest.json" + } + ], + "javaDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "wpiapi-java", + "version": "25.3.1" + } + ], + "jniDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "api-cpp", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6", + "artifactId": "tools", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "api-cpp-sim", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "tools-sim", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonSRX", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simVictorSPX", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simPigeonIMU", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simCANCoder", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFX", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFXS", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANcoder", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProPigeon2", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANrange", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdi", + "version": "25.3.1", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ], + "cppDependencies": [ + { + "groupId": "com.ctre.phoenix6", + "artifactId": "wpiapi-cpp", + "version": "25.3.1", + "libName": "CTRE_Phoenix6_WPI", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6", + "artifactId": "tools", + "version": "25.3.1", + "libName": "CTRE_PhoenixTools", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "linuxathena" + ], + "simMode": "hwsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "wpiapi-cpp-sim", + "version": "25.3.1", + "libName": "CTRE_Phoenix6_WPISim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "tools-sim", + "version": "25.3.1", + "libName": "CTRE_PhoenixTools_Sim", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simTalonSRX", + "version": "25.3.1", + "libName": "CTRE_SimTalonSRX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simVictorSPX", + "version": "25.3.1", + "libName": "CTRE_SimVictorSPX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simPigeonIMU", + "version": "25.3.1", + "libName": "CTRE_SimPigeonIMU", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simCANCoder", + "version": "25.3.1", + "libName": "CTRE_SimCANCoder", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFX", + "version": "25.3.1", + "libName": "CTRE_SimProTalonFX", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProTalonFXS", + "version": "25.3.1", + "libName": "CTRE_SimProTalonFXS", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANcoder", + "version": "25.3.1", + "libName": "CTRE_SimProCANcoder", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProPigeon2", + "version": "25.3.1", + "libName": "CTRE_SimProPigeon2", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANrange", + "version": "25.3.1", + "libName": "CTRE_SimProCANrange", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + }, + { + "groupId": "com.ctre.phoenix6.sim", + "artifactId": "simProCANdi", + "version": "25.3.1", + "libName": "CTRE_SimProCANdi", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxarm64", + "osxuniversal" + ], + "simMode": "swsim" + } + ] +} diff --git a/vendordeps/REVLib.json b/vendordeps/REVLib.json new file mode 100644 index 0000000..459a62f --- /dev/null +++ b/vendordeps/REVLib.json @@ -0,0 +1,71 @@ +{ + "fileName": "REVLib.json", + "name": "REVLib", + "version": "2025.0.3", + "frcYear": "2025", + "uuid": "3f48eb8c-50fe-43a6-9cb7-44c86353c4cb", + "mavenUrls": [ + "https://maven.revrobotics.com/" + ], + "jsonUrl": "https://software-metadata.revrobotics.com/REVLib-2025.json", + "javaDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-java", + "version": "2025.0.3" + } + ], + "jniDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-driver", + "version": "2025.0.3", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-cpp", + "version": "2025.0.3", + "libName": "REVLib", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + }, + { + "groupId": "com.revrobotics.frc", + "artifactId": "REVLib-driver", + "version": "2025.0.3", + "libName": "REVLibDriver", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxarm64", + "linuxx86-64", + "linuxathena", + "linuxarm32", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/Studica.json b/vendordeps/Studica.json new file mode 100644 index 0000000..a3ed1fe --- /dev/null +++ b/vendordeps/Studica.json @@ -0,0 +1,71 @@ +{ + "fileName": "Studica-2025.0.1.json", + "name": "Studica", + "version": "2025.0.1", + "uuid": "cb311d09-36e9-4143-a032-55bb2b94443b", + "frcYear": "2025", + "mavenUrls": [ + "https://dev.studica.com/maven/release/2025/" + ], + "jsonUrl": "https://dev.studica.com/releases/2025/Studica-2025.0.1.json", + "cppDependencies": [ + { + "artifactId": "Studica-cpp", + "binaryPlatforms": [ + "linuxathena", + "linuxarm32", + "linuxarm64", + "linuxx86-64", + "osxuniversal", + "windowsx86-64" + ], + "groupId": "com.studica.frc", + "headerClassifier": "headers", + "libName": "Studica", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "version": "2025.0.1" + }, + { + "artifactId": "Studica-driver", + "binaryPlatforms": [ + "linuxathena", + "linuxarm32", + "linuxarm64", + "linuxx86-64", + "osxuniversal", + "windowsx86-64" + ], + "groupId": "com.studica.frc", + "headerClassifier": "headers", + "libName": "StudicaDriver", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "version": "2025.0.1" + } + ], + "javaDependencies": [ + { + "artifactId": "Studica-java", + "groupId": "com.studica.frc", + "version": "2025.0.1" + } + ], + "jniDependencies": [ + { + "artifactId": "Studica-driver", + "groupId": "com.studica.frc", + "isJar": false, + "skipInvalidPlatforms": true, + "validPlatforms": [ + "linuxathena", + "linuxarm32", + "linuxarm64", + "linuxx86-64", + "osxuniversal", + "windowsx86-64" + ], + "version": "2025.0.1" + } + ] +} diff --git a/vendordeps/URCL.json b/vendordeps/URCL.json new file mode 100644 index 0000000..6beb912 --- /dev/null +++ b/vendordeps/URCL.json @@ -0,0 +1,65 @@ +{ + "fileName": "URCL.json", + "name": "URCL", + "version": "2025.0.1", + "frcYear": "2025", + "uuid": "84246d17-a797-4d1e-bd9f-c59cd8d2477c", + "mavenUrls": [ + "https://frcmaven.wpi.edu/artifactory/littletonrobotics-mvn-release/" + ], + "jsonUrl": "https://raw.githubusercontent.com/Mechanical-Advantage/URCL/main/URCL.json", + "javaDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-java", + "version": "2025.0.1" + } + ], + "jniDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-driver", + "version": "2025.0.1", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-cpp", + "version": "2025.0.1", + "libName": "URCL", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + }, + { + "groupId": "org.littletonrobotics.urcl", + "artifactId": "URCL-driver", + "version": "2025.0.1", + "libName": "URCLDriver", + "headerClassifier": "headers", + "sharedLibrary": false, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxx86-64", + "linuxathena", + "osxuniversal" + ] + } + ] +} diff --git a/vendordeps/photonlib.json b/vendordeps/photonlib.json new file mode 100644 index 0000000..f7a03fa --- /dev/null +++ b/vendordeps/photonlib.json @@ -0,0 +1,71 @@ +{ + "fileName": "photonlib.json", + "name": "photonlib", + "version": "v2025.3.1", + "uuid": "515fe07e-bfc6-11fa-b3de-0242ac130004", + "frcYear": "2025", + "mavenUrls": [ + "https://maven.photonvision.org/repository/internal", + "https://maven.photonvision.org/repository/snapshots" + ], + "jsonUrl": "https://maven.photonvision.org/repository/internal/org/photonvision/photonlib-json/1.0/photonlib-json-1.0.json", + "jniDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-cpp", + "version": "v2025.3.1", + "skipInvalidPlatforms": true, + "isJar": false, + "validPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + } + ], + "cppDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-cpp", + "version": "v2025.3.1", + "libName": "photonlib", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-cpp", + "version": "v2025.3.1", + "libName": "photontargeting", + "headerClassifier": "headers", + "sharedLibrary": true, + "skipInvalidPlatforms": true, + "binaryPlatforms": [ + "windowsx86-64", + "linuxathena", + "linuxx86-64", + "osxuniversal" + ] + } + ], + "javaDependencies": [ + { + "groupId": "org.photonvision", + "artifactId": "photonlib-java", + "version": "v2025.3.1" + }, + { + "groupId": "org.photonvision", + "artifactId": "photontargeting-java", + "version": "v2025.3.1" + } + ] +}