// 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. #include "frc/RobotController.h" #include #include #include #include "frc/Errors.h" using namespace frc; int RobotController::GetFPGAVersion() { int32_t status = 0; int version = HAL_GetFPGAVersion(&status); FRC_CheckErrorStatus(status, "{}", "GetFPGAVersion"); return version; } int64_t RobotController::GetFPGARevision() { int32_t status = 0; int64_t revision = HAL_GetFPGARevision(&status); FRC_CheckErrorStatus(status, "{}", "GetFPGARevision"); return revision; } uint64_t RobotController::GetFPGATime() { int32_t status = 0; uint64_t time = HAL_GetFPGATime(&status); FRC_CheckErrorStatus(status, "{}", "GetFPGATime"); return time; } bool RobotController::GetUserButton() { int32_t status = 0; bool value = HAL_GetFPGAButton(&status); FRC_CheckErrorStatus(status, "{}", "GetUserButton"); return value; } units::volt_t RobotController::GetBatteryVoltage() { int32_t status = 0; double retVal = HAL_GetVinVoltage(&status); FRC_CheckErrorStatus(status, "{}", "GetBatteryVoltage"); return units::volt_t{retVal}; } bool RobotController::IsSysActive() { int32_t status = 0; bool retVal = HAL_GetSystemActive(&status); FRC_CheckErrorStatus(status, "{}", "IsSysActive"); return retVal; } bool RobotController::IsBrownedOut() { int32_t status = 0; bool retVal = HAL_GetBrownedOut(&status); FRC_CheckErrorStatus(status, "{}", "IsBrownedOut"); return retVal; } double RobotController::GetInputVoltage() { int32_t status = 0; double retVal = HAL_GetVinVoltage(&status); FRC_CheckErrorStatus(status, "{}", "GetInputVoltage"); return retVal; } double RobotController::GetInputCurrent() { int32_t status = 0; double retVal = HAL_GetVinCurrent(&status); FRC_CheckErrorStatus(status, "{}", "GetInputCurrent"); return retVal; } double RobotController::GetVoltage3V3() { int32_t status = 0; double retVal = HAL_GetUserVoltage3V3(&status); FRC_CheckErrorStatus(status, "{}", "GetVoltage3V3"); return retVal; } double RobotController::GetCurrent3V3() { int32_t status = 0; double retVal = HAL_GetUserCurrent3V3(&status); FRC_CheckErrorStatus(status, "{}", "GetCurrent3V3"); return retVal; } bool RobotController::GetEnabled3V3() { int32_t status = 0; bool retVal = HAL_GetUserActive3V3(&status); FRC_CheckErrorStatus(status, "{}", "GetEnabled3V3"); return retVal; } int RobotController::GetFaultCount3V3() { int32_t status = 0; int retVal = HAL_GetUserCurrentFaults3V3(&status); FRC_CheckErrorStatus(status, "{}", "GetFaultCount3V3"); return retVal; } double RobotController::GetVoltage5V() { int32_t status = 0; double retVal = HAL_GetUserVoltage5V(&status); FRC_CheckErrorStatus(status, "{}", "GetVoltage5V"); return retVal; } double RobotController::GetCurrent5V() { int32_t status = 0; double retVal = HAL_GetUserCurrent5V(&status); FRC_CheckErrorStatus(status, "{}", "GetCurrent5V"); return retVal; } bool RobotController::GetEnabled5V() { int32_t status = 0; bool retVal = HAL_GetUserActive5V(&status); FRC_CheckErrorStatus(status, "{}", "GetEnabled5V"); return retVal; } int RobotController::GetFaultCount5V() { int32_t status = 0; int retVal = HAL_GetUserCurrentFaults5V(&status); FRC_CheckErrorStatus(status, "{}", "GetFaultCount5V"); return retVal; } double RobotController::GetVoltage6V() { int32_t status = 0; double retVal = HAL_GetUserVoltage6V(&status); FRC_CheckErrorStatus(status, "{}", "GetVoltage6V"); return retVal; } double RobotController::GetCurrent6V() { int32_t status = 0; double retVal = HAL_GetUserCurrent6V(&status); FRC_CheckErrorStatus(status, "{}", "GetCurrent6V"); return retVal; } bool RobotController::GetEnabled6V() { int32_t status = 0; bool retVal = HAL_GetUserActive6V(&status); FRC_CheckErrorStatus(status, "{}", "GetEnabled6V"); return retVal; } int RobotController::GetFaultCount6V() { int32_t status = 0; int retVal = HAL_GetUserCurrentFaults6V(&status); FRC_CheckErrorStatus(status, "{}", "GetFaultCount6V"); return retVal; } units::volt_t RobotController::GetBrownoutVoltage() { int32_t status = 0; double retVal = HAL_GetBrownoutVoltage(&status); FRC_CheckErrorStatus(status, "{}", "GetBrownoutVoltage"); return units::volt_t(retVal); } void RobotController::SetBrownoutVoltage(units::volt_t brownoutVoltage) { int32_t status = 0; HAL_SetBrownoutVoltage(brownoutVoltage.value(), &status); FRC_CheckErrorStatus(status, "{}", "SetBrownoutVoltage"); } CANStatus RobotController::GetCANStatus() { int32_t status = 0; float percentBusUtilization = 0; uint32_t busOffCount = 0; uint32_t txFullCount = 0; uint32_t receiveErrorCount = 0; uint32_t transmitErrorCount = 0; HAL_CAN_GetCANStatus(&percentBusUtilization, &busOffCount, &txFullCount, &receiveErrorCount, &transmitErrorCount, &status); FRC_CheckErrorStatus(status, "{}", "GetCANStatus"); return {percentBusUtilization, static_cast(busOffCount), static_cast(txFullCount), static_cast(receiveErrorCount), static_cast(transmitErrorCount)}; }