mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-06 03:31:43 +00:00
[hal] Add REV PH faults (#3729)
This commit is contained in:
committed by
GitHub
parent
aacf9442e4
commit
a9931223f0
@@ -562,3 +562,59 @@ void HAL_FireREVPHOneShot(HAL_REVPHHandle handle, int32_t index, int32_t durMs,
|
||||
HAL_WriteCANPacket(ph->hcan, packedData, PH_PULSE_ONCE_LENGTH,
|
||||
PH_PULSE_ONCE_FRAME_API, status);
|
||||
}
|
||||
|
||||
HAL_REVPHFaults HAL_GetREVPHFaults(HAL_REVPHHandle handle, int32_t* status) {
|
||||
HAL_REVPHFaults faults = {};
|
||||
auto ph = REVPHHandles->Get(handle);
|
||||
if (ph == nullptr) {
|
||||
*status = HAL_HANDLE_ERROR;
|
||||
return faults;
|
||||
}
|
||||
|
||||
PH_status0_t status0 = HAL_REV_ReadPHStatus0(ph->hcan, status);
|
||||
faults.channel0Fault = status0.channel_0_fault;
|
||||
faults.channel1Fault = status0.channel_1_fault;
|
||||
faults.channel2Fault = status0.channel_2_fault;
|
||||
faults.channel3Fault = status0.channel_3_fault;
|
||||
faults.channel4Fault = status0.channel_4_fault;
|
||||
faults.channel5Fault = status0.channel_5_fault;
|
||||
faults.channel6Fault = status0.channel_6_fault;
|
||||
faults.channel7Fault = status0.channel_7_fault;
|
||||
faults.channel8Fault = status0.channel_8_fault;
|
||||
faults.channel9Fault = status0.channel_9_fault;
|
||||
faults.channel10Fault = status0.channel_10_fault;
|
||||
faults.channel11Fault = status0.channel_11_fault;
|
||||
faults.channel12Fault = status0.channel_12_fault;
|
||||
faults.channel13Fault = status0.channel_13_fault;
|
||||
faults.channel14Fault = status0.channel_14_fault;
|
||||
faults.channel15Fault = status0.channel_15_fault;
|
||||
faults.compressorOverCurrent = status0.compressor_oc;
|
||||
faults.compressorOpen = status0.compressor_open;
|
||||
faults.solenoidOverCurrent = status0.solenoid_oc;
|
||||
faults.brownout = status0.brownout;
|
||||
faults.canWarning = status0.can_warning;
|
||||
faults.hardwareFault = status0.hardware_fault;
|
||||
|
||||
return faults;
|
||||
}
|
||||
|
||||
HAL_REVPHStickyFaults HAL_GetREVPHStickyFaults(HAL_REVPHHandle handle,
|
||||
int32_t* status) {
|
||||
HAL_REVPHStickyFaults stickyFaults = {};
|
||||
auto ph = REVPHHandles->Get(handle);
|
||||
if (ph == nullptr) {
|
||||
*status = HAL_HANDLE_ERROR;
|
||||
return stickyFaults;
|
||||
}
|
||||
|
||||
PH_status1_t status1 = HAL_REV_ReadPHStatus1(ph->hcan, status);
|
||||
stickyFaults.compressorOverCurrent = status1.sticky_compressor_over_current;
|
||||
stickyFaults.compressorOpen = status1.sticky_compressor_not_present;
|
||||
stickyFaults.solenoidOverCurrent = status1.sticky_solenoid_over_current;
|
||||
stickyFaults.brownout = status1.sticky_brownout;
|
||||
stickyFaults.canWarning = status1.sticky_can_warning;
|
||||
stickyFaults.canBusOff = status1.sticky_can_bus_off;
|
||||
stickyFaults.hasReset = status1.sticky_has_reset;
|
||||
|
||||
return stickyFaults;
|
||||
}
|
||||
|
||||
@@ -34,6 +34,47 @@ struct HAL_REVPHCompressorConfig {
|
||||
HAL_Bool useDigital;
|
||||
};
|
||||
|
||||
/**
|
||||
* Storage for REV PH Faults
|
||||
*/
|
||||
struct HAL_REVPHFaults {
|
||||
uint32_t channel0Fault : 1;
|
||||
uint32_t channel1Fault : 1;
|
||||
uint32_t channel2Fault : 1;
|
||||
uint32_t channel3Fault : 1;
|
||||
uint32_t channel4Fault : 1;
|
||||
uint32_t channel5Fault : 1;
|
||||
uint32_t channel6Fault : 1;
|
||||
uint32_t channel7Fault : 1;
|
||||
uint32_t channel8Fault : 1;
|
||||
uint32_t channel9Fault : 1;
|
||||
uint32_t channel10Fault : 1;
|
||||
uint32_t channel11Fault : 1;
|
||||
uint32_t channel12Fault : 1;
|
||||
uint32_t channel13Fault : 1;
|
||||
uint32_t channel14Fault : 1;
|
||||
uint32_t channel15Fault : 1;
|
||||
uint32_t compressorOverCurrent : 1;
|
||||
uint32_t compressorOpen : 1;
|
||||
uint32_t solenoidOverCurrent : 1;
|
||||
uint32_t brownout : 1;
|
||||
uint32_t canWarning : 1;
|
||||
uint32_t hardwareFault : 1;
|
||||
};
|
||||
|
||||
/**
|
||||
* Storage for REV PH Sticky Faults
|
||||
*/
|
||||
struct HAL_REVPHStickyFaults {
|
||||
uint32_t compressorOverCurrent : 1;
|
||||
uint32_t compressorOpen : 1;
|
||||
uint32_t solenoidOverCurrent : 1;
|
||||
uint32_t brownout : 1;
|
||||
uint32_t canWarning : 1;
|
||||
uint32_t canBusOff : 1;
|
||||
uint32_t hasReset : 1;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -80,6 +121,11 @@ void HAL_SetREVPHSolenoids(HAL_REVPHHandle handle, int32_t mask, int32_t values,
|
||||
void HAL_FireREVPHOneShot(HAL_REVPHHandle handle, int32_t index, int32_t durMs,
|
||||
int32_t* status);
|
||||
|
||||
HAL_REVPHFaults HAL_GetREVPHFaults(HAL_REVPHHandle handle, int32_t* status);
|
||||
|
||||
HAL_REVPHStickyFaults HAL_GetREVPHStickyFaults(HAL_REVPHHandle handle,
|
||||
int32_t* status);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user