[hal,wpilib] Switch CANBusMap to Enum, use it for CAN API (#8977)

Will make it easier to solve
https://github.com/wpilibsuite/SystemcoreTesting/issues/286
This commit is contained in:
Thad House
2026-06-11 16:14:40 -07:00
committed by GitHub
parent 97381549e6
commit 489b993e60
13 changed files with 165 additions and 94 deletions

View File

@@ -36,7 +36,7 @@ public class CAN implements Closeable {
* @param busId The bus ID
* @param deviceId The device id
*/
public CAN(int busId, int deviceId) {
public CAN(CANBusMap busId, int deviceId) {
this(busId, deviceId, TEAM_MANUFACTURER, TEAM_DEVICE_TYPE);
}
@@ -49,8 +49,8 @@ public class CAN implements Closeable {
* @param deviceManufacturer The device manufacturer
* @param deviceType The device type
*/
public CAN(int busId, int deviceId, int deviceManufacturer, int deviceType) {
m_handle = CANAPIJNI.initializeCAN(busId, deviceManufacturer, deviceId, deviceType);
public CAN(CANBusMap busId, int deviceId, int deviceManufacturer, int deviceType) {
m_handle = CANAPIJNI.initializeCAN(busId.value, deviceManufacturer, deviceId, deviceType);
HAL.reportUsage("CAN[" + deviceType + "][" + deviceManufacturer + "][" + deviceId + "]", "");
}

View File

@@ -0,0 +1,70 @@
// Copyright (c) FIRST and other WPILib contributors.
// Open Source Software; you can modify and/or share it under the terms of
// the WPILib BSD license file in the root directory of this project.
package org.wpilib.hardware.bus;
/**
* CAN bus mapping.
*
* <p>S0-S4 are Systemcore CAN buses. D0-D19 are Motioncore CAN buses.
*/
public enum CANBusMap {
/** CAN bus S0. */
CAN_S0(0),
/** CAN bus S1. */
CAN_S1(1),
/** CAN bus S2. */
CAN_S2(2),
/** CAN bus S3. */
CAN_S3(3),
/** CAN bus S4. */
CAN_S4(4),
/** CAN bus D0. */
CAN_D0(5),
/** CAN bus D1. */
CAN_D1(6),
/** CAN bus D2. */
CAN_D2(7),
/** CAN bus D3. */
CAN_D3(8),
/** CAN bus D4. */
CAN_D4(9),
/** CAN bus D5. */
CAN_D5(10),
/** CAN bus D6. */
CAN_D6(11),
/** CAN bus D7. */
CAN_D7(12),
/** CAN bus D8. */
CAN_D8(13),
/** CAN bus D9. */
CAN_D9(14),
/** CAN bus D10. */
CAN_D10(15),
/** CAN bus D11. */
CAN_D11(16),
/** CAN bus D12. */
CAN_D12(17),
/** CAN bus D13. */
CAN_D13(18),
/** CAN bus D14. */
CAN_D14(19),
/** CAN bus D15. */
CAN_D15(20),
/** CAN bus D16. */
CAN_D16(21),
/** CAN bus D17. */
CAN_D17(22),
/** CAN bus D18. */
CAN_D18(23),
/** CAN bus D19. */
CAN_D19(24);
/** CAN bus ID. */
public final int value;
CANBusMap(int value) {
this.value = value;
}
}