mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
CANJaguar can be disabled [artf2647]
The CANJaguar class now stores a controlEnabled flag. When disabled, it won't verify the control mode, which involves sending enable messages. Change-Id: I8baa48eec31de6b4d3fee2b5a074320542a1bbef
This commit is contained in:
committed by
Thomas Clark
parent
f4f7588cfb
commit
f958b65ba6
@@ -301,45 +301,47 @@ public class CANJaguar implements MotorSafety, PIDOutput, SpeedController, LiveW
|
||||
byte[] data = new byte[8];
|
||||
byte dataSize;
|
||||
|
||||
switch(m_controlMode) {
|
||||
case PercentVbus:
|
||||
messageID = CANJNI.LM_API_VOLT_T_SET;
|
||||
dataSize = packPercentage(data, outputValue);
|
||||
break;
|
||||
if(m_controlEnabled) {
|
||||
switch(m_controlMode) {
|
||||
case PercentVbus:
|
||||
messageID = CANJNI.LM_API_VOLT_T_SET;
|
||||
dataSize = packPercentage(data, outputValue);
|
||||
break;
|
||||
|
||||
case Speed:
|
||||
messageID = CANJNI.LM_API_SPD_T_SET;
|
||||
dataSize = packFXP16_16(data, outputValue);
|
||||
break;
|
||||
case Speed:
|
||||
messageID = CANJNI.LM_API_SPD_T_SET;
|
||||
dataSize = packFXP16_16(data, outputValue);
|
||||
break;
|
||||
|
||||
case Position:
|
||||
messageID = CANJNI.LM_API_POS_T_SET;
|
||||
dataSize = packFXP16_16(data, outputValue);
|
||||
break;
|
||||
case Position:
|
||||
messageID = CANJNI.LM_API_POS_T_SET;
|
||||
dataSize = packFXP16_16(data, outputValue);
|
||||
break;
|
||||
|
||||
case Current:
|
||||
messageID = CANJNI.LM_API_ICTRL_T_SET;
|
||||
dataSize = packFXP8_8(data, outputValue);
|
||||
break;
|
||||
case Current:
|
||||
messageID = CANJNI.LM_API_ICTRL_T_SET;
|
||||
dataSize = packFXP8_8(data, outputValue);
|
||||
break;
|
||||
|
||||
|
||||
case Voltage:
|
||||
messageID = CANJNI.LM_API_VCOMP_T_SET;
|
||||
dataSize = packFXP8_8(data, outputValue);
|
||||
break;
|
||||
case Voltage:
|
||||
messageID = CANJNI.LM_API_VCOMP_T_SET;
|
||||
dataSize = packFXP8_8(data, outputValue);
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
if(syncGroup != 0) {
|
||||
data[dataSize++] = syncGroup;
|
||||
}
|
||||
|
||||
sendMessage(messageID, data, dataSize, kSendMessagePeriod);
|
||||
|
||||
if(m_safetyHelper != null) m_safetyHelper.feed();
|
||||
}
|
||||
|
||||
if(syncGroup != 0) {
|
||||
data[dataSize++] = syncGroup;
|
||||
}
|
||||
|
||||
sendMessage(messageID, data, dataSize, kSendMessagePeriod);
|
||||
|
||||
if(m_safetyHelper != null) m_safetyHelper.feed();
|
||||
|
||||
m_value = outputValue;
|
||||
|
||||
verify();
|
||||
@@ -429,15 +431,13 @@ public class CANJaguar implements MotorSafety, PIDOutput, SpeedController, LiveW
|
||||
getMessage(message, CANJNI.CAN_MSGID_FULL_M, data);
|
||||
} catch (CANMessageNotFoundException e) {}
|
||||
}
|
||||
|
||||
enableControl();
|
||||
}
|
||||
} catch(CANMessageNotFoundException e) {
|
||||
requestMessage(CANJNI.LM_API_STATUS_POWER);
|
||||
}
|
||||
|
||||
// Verify that any recently set parameters are correct
|
||||
if(!m_controlModeVerified) {
|
||||
if(!m_controlModeVerified && m_controlEnabled) {
|
||||
try {
|
||||
getMessage(CANJNI.LM_API_STATUS_CMODE, CANJNI.CAN_MSGID_FULL_M, data);
|
||||
|
||||
@@ -1012,6 +1012,8 @@ public class CANJaguar implements MotorSafety, PIDOutput, SpeedController, LiveW
|
||||
sendMessage(CANJNI.LM_API_VCOMP_T_EN, new byte[0], 0);
|
||||
break;
|
||||
}
|
||||
|
||||
m_controlEnabled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1052,6 +1054,8 @@ public class CANJaguar implements MotorSafety, PIDOutput, SpeedController, LiveW
|
||||
sendMessage(CANJNI.LM_API_VCOMP_DIS, new byte[0], 0);
|
||||
break;
|
||||
}
|
||||
|
||||
m_controlEnabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1731,6 +1735,8 @@ public class CANJaguar implements MotorSafety, PIDOutput, SpeedController, LiveW
|
||||
|
||||
static final int kReceiveStatusAttempts = 50;
|
||||
|
||||
boolean m_controlEnabled = true;
|
||||
|
||||
static void sendMessageHelper(int messageID, byte[] data, int dataSize, int period) throws CANMessageNotFoundException {
|
||||
final int[] kTrustedMessages = {
|
||||
CANJNI.LM_API_VOLT_T_EN, CANJNI.LM_API_VOLT_T_SET, CANJNI.LM_API_SPD_T_EN, CANJNI.LM_API_SPD_T_SET,
|
||||
|
||||
Reference in New Issue
Block a user