[wpilib, hal] Add function to read the RSL state (#5312)

This commit is contained in:
Ryan Blue
2023-05-13 00:30:19 -04:00
committed by GitHub
parent 7a90475eec
commit 463a90f1df
8 changed files with 59 additions and 0 deletions

View File

@@ -117,6 +117,8 @@ public final class HAL extends JNIWrapper {
public static native boolean getSystemActive();
public static native boolean getRSLState();
public static native int getPortWithModule(byte module, byte channel);
public static native int getPort(byte channel);

View File

@@ -423,6 +423,15 @@ HAL_Bool HAL_GetBrownedOut(int32_t* status) {
return !(watchdog->readStatus_PowerAlive(status));
}
HAL_Bool HAL_GetRSLState(int32_t* status) {
hal::init::CheckInit();
if (!global) {
*status = NiFpga_Status_ResourceNotInitialized;
return false;
}
return global->readLEDs_RSL(status);
}
static bool killExistingProgram(int timeout, int mode) {
// Kill any previous robot programs
std::fstream fs;

View File

@@ -136,6 +136,21 @@ Java_edu_wpi_first_hal_HAL_getBrownedOut
return val;
}
/*
* Class: edu_wpi_first_hal_HAL
* Method: getRSLState
* Signature: ()Z
*/
JNIEXPORT jboolean JNICALL
Java_edu_wpi_first_hal_HAL_getRSLState
(JNIEnv* env, jclass)
{
int32_t status = 0;
bool val = HAL_GetRSLState(&status);
CheckStatus(env, status);
return val;
}
/*
* Class: edu_wpi_first_hal_HAL
* Method: getPortWithModule

View File

@@ -172,6 +172,13 @@ uint64_t HAL_GetFPGATime(int32_t* status);
*/
uint64_t HAL_ExpandFPGATime(uint32_t unexpandedLower, int32_t* status);
/**
* Gets the current state of the Robot Signal Light (RSL)
* @param[out] status the error code, or 0 for success
* @return The current state of the RSL- true if on, false if off
*/
HAL_Bool HAL_GetRSLState(int32_t* status);
/**
* Call this to start up HAL. This is required for robot programs.
*

View File

@@ -328,6 +328,10 @@ HAL_Bool HAL_GetBrownedOut(int32_t* status) {
return false; // Figure out if we need to detect a brownout condition
}
HAL_Bool HAL_GetRSLState(int32_t* status) {
return false;
}
HAL_Bool HAL_Initialize(int32_t timeout, int32_t mode) {
static std::atomic_bool initialized{false};
static wpi::mutex initializeMutex;

View File

@@ -76,6 +76,13 @@ bool RobotController::IsBrownedOut() {
return retVal;
}
bool RobotController::GetRSLState() {
int32_t status = 0;
bool retVal = HAL_GetRSLState(&status);
FRC_CheckErrorStatus(status, "GetRSLState");
return retVal;
}
double RobotController::GetInputVoltage() {
int32_t status = 0;
double retVal = HAL_GetVinVoltage(&status);

View File

@@ -101,6 +101,12 @@ class RobotController {
*/
static bool IsBrownedOut();
/**
* Gets the current state of the Robot Signal Light (RSL)
* @return The current state of the RSL- true if on, false if off
*/
static bool GetRSLState();
/**
* Get the input voltage to the robot controller.
*

View File

@@ -103,6 +103,15 @@ public final class RobotController {
return HAL.getBrownedOut();
}
/**
* Gets the current state of the Robot Signal Light (RSL).
*
* @return The current state of the RSL- true if on, false if off
*/
public static boolean getRSLState() {
return HAL.getRSLState();
}
/**
* Get the input voltage to the robot controller.
*