Enable log macros to work with no args (#4475)

This is enabled by the C++20 __VA_OPT__ feature.
Uses of "{}" format string were updated.
Some warning suppressions were required for older clang versions.
Also improve codegen of wpi::Logger::Log(), frc::ReportError(), and frc::MakeError();
these generate better and less redundant code if they use fmt::string_view for the
format string instead of templating on it.
This commit is contained in:
Tyler Veness
2022-10-19 10:49:27 -07:00
committed by GitHub
parent 878cc8defb
commit 1fc098e696
70 changed files with 373 additions and 338 deletions

View File

@@ -61,9 +61,9 @@ inline void ADISReportError(int32_t status, const char* file, int line,
} // namespace
#define REPORT_WARNING(msg) \
ADISReportError(warn::Warning, __FILE__, __LINE__, __FUNCTION__, "{}", msg);
ADISReportError(warn::Warning, __FILE__, __LINE__, __FUNCTION__, msg);
#define REPORT_ERROR(msg) \
ADISReportError(err::Error, __FILE__, __LINE__, __FUNCTION__, "{}", msg)
ADISReportError(err::Error, __FILE__, __LINE__, __FUNCTION__, msg)
ADIS16448_IMU::ADIS16448_IMU()
: ADIS16448_IMU(kZ, SPI::Port::kMXP, CalibrationTime::_512ms) {}

View File

@@ -55,9 +55,9 @@ inline void ADISReportError(int32_t status, const char* file, int line,
} // namespace
#define REPORT_WARNING(msg) \
ADISReportError(warn::Warning, __FILE__, __LINE__, __FUNCTION__, "{}", msg);
ADISReportError(warn::Warning, __FILE__, __LINE__, __FUNCTION__, msg);
#define REPORT_ERROR(msg) \
ADISReportError(err::Error, __FILE__, __LINE__, __FUNCTION__, "{}", msg)
ADISReportError(err::Error, __FILE__, __LINE__, __FUNCTION__, msg)
/**
* Constructor.

View File

@@ -55,7 +55,7 @@ ADXL362::ADXL362(SPI::Port port, Range range)
commands[2] = 0;
m_spi.Transaction(commands, commands, 3);
if (commands[2] != 0xF2) {
FRC_ReportError(err::Error, "{}", "could not find ADXL362");
FRC_ReportError(err::Error, "could not find ADXL362");
m_gsPerLSB = 0.0;
return;
}

View File

@@ -44,7 +44,7 @@ ADXRS450_Gyro::ADXRS450_Gyro(SPI::Port port)
if (!m_simDevice) {
// Validate the part ID
if ((ReadRegister(kPIDRegister) & 0xff00) != 0x5200) {
FRC_ReportError(err::Error, "{}", "could not find ADXRS450 gyro");
FRC_ReportError(err::Error, "could not find ADXRS450 gyro");
return;
}

View File

@@ -21,7 +21,7 @@ AnalogAccelerometer::AnalogAccelerometer(int channel)
AnalogAccelerometer::AnalogAccelerometer(AnalogInput* channel)
: m_analogInput(channel, wpi::NullDeleter<AnalogInput>()) {
if (!channel) {
throw FRC_MakeError(err::NullParameter, "{}", "channel");
throw FRC_MakeError(err::NullParameter, "channel");
}
InitAccelerometer();
}
@@ -29,7 +29,7 @@ AnalogAccelerometer::AnalogAccelerometer(AnalogInput* channel)
AnalogAccelerometer::AnalogAccelerometer(std::shared_ptr<AnalogInput> channel)
: m_analogInput(channel) {
if (!channel) {
throw FRC_MakeError(err::NullParameter, "{}", "channel");
throw FRC_MakeError(err::NullParameter, "channel");
}
InitAccelerometer();
}

View File

@@ -83,7 +83,7 @@ units::turn_t AnalogEncoder::Get() const {
}
FRC_ReportError(
warn::Warning, "{}",
warn::Warning,
"Failed to read Analog Encoder. Potential Speed Overrun. Returning last "
"value");
return m_lastPosition;

View File

@@ -33,7 +33,7 @@ AnalogGyro::AnalogGyro(AnalogInput* channel)
AnalogGyro::AnalogGyro(std::shared_ptr<AnalogInput> channel)
: m_analog(channel) {
if (!channel) {
throw FRC_MakeError(err::NullParameter, "{}", "channel");
throw FRC_MakeError(err::NullParameter, "channel");
}
InitGyro();
Calibrate();
@@ -48,7 +48,7 @@ AnalogGyro::AnalogGyro(std::shared_ptr<AnalogInput> channel, int center,
double offset)
: m_analog(channel) {
if (!channel) {
throw FRC_MakeError(err::NullParameter, "{}", "channel");
throw FRC_MakeError(err::NullParameter, "channel");
}
InitGyro();
int32_t status = 0;

View File

@@ -180,13 +180,13 @@ void AnalogInput::GetAccumulatorOutput(int64_t& value, int64_t& count) const {
void AnalogInput::SetSampleRate(double samplesPerSecond) {
int32_t status = 0;
HAL_SetAnalogSampleRate(samplesPerSecond, &status);
FRC_CheckErrorStatus(status, "{}", "SetSampleRate");
FRC_CheckErrorStatus(status, "SetSampleRate");
}
double AnalogInput::GetSampleRate() {
int32_t status = 0;
double sampleRate = HAL_GetAnalogSampleRate(&status);
FRC_CheckErrorStatus(status, "{}", "GetSampleRate");
FRC_CheckErrorStatus(status, "GetSampleRate");
return sampleRate;
}

View File

@@ -18,7 +18,7 @@ bool AnalogTriggerOutput::Get() const {
bool result = HAL_GetAnalogTriggerOutput(
m_trigger->m_trigger, static_cast<HAL_AnalogTriggerType>(m_outputType),
&status);
FRC_CheckErrorStatus(status, "{}", "Get");
FRC_CheckErrorStatus(status, "Get");
return result;
}

View File

@@ -23,7 +23,7 @@ BuiltInAccelerometer::BuiltInAccelerometer(Range range) {
void BuiltInAccelerometer::SetRange(Range range) {
if (range == kRange_16G) {
throw FRC_MakeError(err::ParameterOutOfRange, "{}",
throw FRC_MakeError(err::ParameterOutOfRange,
"16G range not supported (use k2G, k4G, or k8G)");
}

View File

@@ -45,20 +45,20 @@ CAN::~CAN() {
void CAN::WritePacket(const uint8_t* data, int length, int apiId) {
int32_t status = 0;
HAL_WriteCANPacket(m_handle, data, length, apiId, &status);
FRC_CheckErrorStatus(status, "{}", "WritePacket");
FRC_CheckErrorStatus(status, "WritePacket");
}
void CAN::WritePacketRepeating(const uint8_t* data, int length, int apiId,
int repeatMs) {
int32_t status = 0;
HAL_WriteCANPacketRepeating(m_handle, data, length, apiId, repeatMs, &status);
FRC_CheckErrorStatus(status, "{}", "WritePacketRepeating");
FRC_CheckErrorStatus(status, "WritePacketRepeating");
}
void CAN::WriteRTRFrame(int length, int apiId) {
int32_t status = 0;
HAL_WriteCANRTRFrame(m_handle, length, apiId, &status);
FRC_CheckErrorStatus(status, "{}", "WriteRTRFrame");
FRC_CheckErrorStatus(status, "WriteRTRFrame");
}
int CAN::WritePacketNoError(const uint8_t* data, int length, int apiId) {
@@ -83,7 +83,7 @@ int CAN::WriteRTRFrameNoError(int length, int apiId) {
void CAN::StopPacketRepeating(int apiId) {
int32_t status = 0;
HAL_StopCANPacketRepeating(m_handle, apiId, &status);
FRC_CheckErrorStatus(status, "{}", "StopPacketRepeating");
FRC_CheckErrorStatus(status, "StopPacketRepeating");
}
bool CAN::ReadPacketNew(int apiId, CANData* data) {
@@ -94,7 +94,7 @@ bool CAN::ReadPacketNew(int apiId, CANData* data) {
return false;
}
if (status != 0) {
FRC_CheckErrorStatus(status, "{}", "ReadPacketNew");
FRC_CheckErrorStatus(status, "ReadPacketNew");
return false;
} else {
return true;
@@ -109,7 +109,7 @@ bool CAN::ReadPacketLatest(int apiId, CANData* data) {
return false;
}
if (status != 0) {
FRC_CheckErrorStatus(status, "{}", "ReadPacketLatest");
FRC_CheckErrorStatus(status, "ReadPacketLatest");
return false;
} else {
return true;
@@ -125,7 +125,7 @@ bool CAN::ReadPacketTimeout(int apiId, int timeoutMs, CANData* data) {
return false;
}
if (status != 0) {
FRC_CheckErrorStatus(status, "{}", "ReadPacketTimeout");
FRC_CheckErrorStatus(status, "ReadPacketTimeout");
return false;
} else {
return true;

View File

@@ -22,7 +22,7 @@ Counter::Counter(Mode mode) {
int32_t status = 0;
m_counter = HAL_InitializeCounter(static_cast<HAL_Counter_Mode>(mode),
&m_index, &status);
FRC_CheckErrorStatus(status, "{}", "InitializeCounter");
FRC_CheckErrorStatus(status, "InitializeCounter");
SetMaxPeriod(0.5_s);
@@ -64,7 +64,7 @@ Counter::Counter(EncodingType encodingType,
std::shared_ptr<DigitalSource> downSource, bool inverted)
: Counter(kExternalDirection) {
if (encodingType != k1X && encodingType != k2X) {
throw FRC_MakeError(err::ParameterOutOfRange, "{}",
throw FRC_MakeError(err::ParameterOutOfRange,
"Counter only supports 1X and 2X quadrature decoding");
}
SetUpSource(upSource);
@@ -79,7 +79,7 @@ Counter::Counter(EncodingType encodingType,
HAL_SetCounterAverageSize(m_counter, 2, &status);
}
FRC_CheckErrorStatus(status, "{}", "Counter constructor");
FRC_CheckErrorStatus(status, "Counter constructor");
SetDownSourceEdge(inverted, true);
}
@@ -92,7 +92,7 @@ Counter::~Counter() {
int32_t status = 0;
HAL_FreeCounter(m_counter, &status);
FRC_ReportError(status, "{}", "Counter destructor");
FRC_ReportError(status, "Counter destructor");
}
void Counter::SetUpSource(int channel) {
@@ -124,7 +124,7 @@ void Counter::SetUpSource(std::shared_ptr<DigitalSource> source) {
static_cast<HAL_AnalogTriggerType>(
source->GetAnalogTriggerTypeForRouting()),
&status);
FRC_CheckErrorStatus(status, "{}", "SetUpSource");
FRC_CheckErrorStatus(status, "SetUpSource");
}
void Counter::SetUpSource(DigitalSource& source) {
@@ -135,19 +135,19 @@ void Counter::SetUpSource(DigitalSource& source) {
void Counter::SetUpSourceEdge(bool risingEdge, bool fallingEdge) {
if (m_upSource == nullptr) {
throw FRC_MakeError(
err::NullParameter, "{}",
err::NullParameter,
"Must set non-nullptr UpSource before setting UpSourceEdge");
}
int32_t status = 0;
HAL_SetCounterUpSourceEdge(m_counter, risingEdge, fallingEdge, &status);
FRC_CheckErrorStatus(status, "{}", "SetUpSourceEdge");
FRC_CheckErrorStatus(status, "SetUpSourceEdge");
}
void Counter::ClearUpSource() {
m_upSource.reset();
int32_t status = 0;
HAL_ClearCounterUpSource(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "ClearUpSource");
FRC_CheckErrorStatus(status, "ClearUpSource");
}
void Counter::SetDownSource(int channel) {
@@ -184,37 +184,37 @@ void Counter::SetDownSource(std::shared_ptr<DigitalSource> source) {
static_cast<HAL_AnalogTriggerType>(
source->GetAnalogTriggerTypeForRouting()),
&status);
FRC_CheckErrorStatus(status, "{}", "SetDownSource");
FRC_CheckErrorStatus(status, "SetDownSource");
}
void Counter::SetDownSourceEdge(bool risingEdge, bool fallingEdge) {
if (m_downSource == nullptr) {
throw FRC_MakeError(
err::NullParameter, "{}",
err::NullParameter,
"Must set non-nullptr DownSource before setting DownSourceEdge");
}
int32_t status = 0;
HAL_SetCounterDownSourceEdge(m_counter, risingEdge, fallingEdge, &status);
FRC_CheckErrorStatus(status, "{}", "SetDownSourceEdge");
FRC_CheckErrorStatus(status, "SetDownSourceEdge");
}
void Counter::ClearDownSource() {
m_downSource.reset();
int32_t status = 0;
HAL_ClearCounterDownSource(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "ClearDownSource");
FRC_CheckErrorStatus(status, "ClearDownSource");
}
void Counter::SetUpDownCounterMode() {
int32_t status = 0;
HAL_SetCounterUpDownMode(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "SetUpDownCounterMode");
FRC_CheckErrorStatus(status, "SetUpDownCounterMode");
}
void Counter::SetExternalDirectionMode() {
int32_t status = 0;
HAL_SetCounterExternalDirectionMode(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "SetExternalDirectionMode");
FRC_CheckErrorStatus(status, "SetExternalDirectionMode");
}
void Counter::SetSemiPeriodMode(bool highSemiPeriod) {
@@ -227,7 +227,7 @@ void Counter::SetSemiPeriodMode(bool highSemiPeriod) {
void Counter::SetPulseLengthMode(double threshold) {
int32_t status = 0;
HAL_SetCounterPulseLengthMode(m_counter, threshold, &status);
FRC_CheckErrorStatus(status, "{}", "SetPulseLengthMode");
FRC_CheckErrorStatus(status, "SetPulseLengthMode");
}
void Counter::SetReverseDirection(bool reverseDirection) {
@@ -252,7 +252,7 @@ void Counter::SetSamplesToAverage(int samplesToAverage) {
int Counter::GetSamplesToAverage() const {
int32_t status = 0;
int samples = HAL_GetCounterSamplesToAverage(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "GetSamplesToAverage");
FRC_CheckErrorStatus(status, "GetSamplesToAverage");
return samples;
}
@@ -263,46 +263,46 @@ int Counter::GetFPGAIndex() const {
int Counter::Get() const {
int32_t status = 0;
int value = HAL_GetCounter(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "Get");
FRC_CheckErrorStatus(status, "Get");
return value;
}
void Counter::Reset() {
int32_t status = 0;
HAL_ResetCounter(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "Reset");
FRC_CheckErrorStatus(status, "Reset");
}
units::second_t Counter::GetPeriod() const {
int32_t status = 0;
double value = HAL_GetCounterPeriod(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "GetPeriod");
FRC_CheckErrorStatus(status, "GetPeriod");
return units::second_t{value};
}
void Counter::SetMaxPeriod(units::second_t maxPeriod) {
int32_t status = 0;
HAL_SetCounterMaxPeriod(m_counter, maxPeriod.value(), &status);
FRC_CheckErrorStatus(status, "{}", "SetMaxPeriod");
FRC_CheckErrorStatus(status, "SetMaxPeriod");
}
void Counter::SetUpdateWhenEmpty(bool enabled) {
int32_t status = 0;
HAL_SetCounterUpdateWhenEmpty(m_counter, enabled, &status);
FRC_CheckErrorStatus(status, "{}", "SetUpdateWhenEmpty");
FRC_CheckErrorStatus(status, "SetUpdateWhenEmpty");
}
bool Counter::GetStopped() const {
int32_t status = 0;
bool value = HAL_GetCounterStopped(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "GetStopped");
FRC_CheckErrorStatus(status, "GetStopped");
return value;
}
bool Counter::GetDirection() const {
int32_t status = 0;
bool value = HAL_GetCounterDirection(m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "GetDirection");
FRC_CheckErrorStatus(status, "GetDirection");
return value;
}

View File

@@ -27,7 +27,7 @@ using namespace frc;
DMA::DMA() {
int32_t status = 0;
dmaHandle = HAL_InitializeDMA(&status);
FRC_CheckErrorStatus(status, "{}", "InitializeDMA");
FRC_CheckErrorStatus(status, "InitializeDMA");
}
DMA::~DMA() {
@@ -37,74 +37,74 @@ DMA::~DMA() {
void DMA::SetPause(bool pause) {
int32_t status = 0;
HAL_SetDMAPause(dmaHandle, pause, &status);
FRC_CheckErrorStatus(status, "{}", "SetPause");
FRC_CheckErrorStatus(status, "SetPause");
}
void DMA::SetTimedTrigger(units::second_t seconds) {
int32_t status = 0;
HAL_SetDMATimedTrigger(dmaHandle, seconds.value(), &status);
FRC_CheckErrorStatus(status, "{}", "SetTimedTrigger");
FRC_CheckErrorStatus(status, "SetTimedTrigger");
}
void DMA::SetTimedTriggerCycles(int cycles) {
int32_t status = 0;
HAL_SetDMATimedTriggerCycles(dmaHandle, cycles, &status);
FRC_CheckErrorStatus(status, "{}", "SetTimedTriggerCycles");
FRC_CheckErrorStatus(status, "SetTimedTriggerCycles");
}
void DMA::AddEncoder(const Encoder* encoder) {
int32_t status = 0;
HAL_AddDMAEncoder(dmaHandle, encoder->m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "AddEncoder");
FRC_CheckErrorStatus(status, "AddEncoder");
}
void DMA::AddEncoderPeriod(const Encoder* encoder) {
int32_t status = 0;
HAL_AddDMAEncoderPeriod(dmaHandle, encoder->m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "AddEncoderPeriod");
FRC_CheckErrorStatus(status, "AddEncoderPeriod");
}
void DMA::AddCounter(const Counter* counter) {
int32_t status = 0;
HAL_AddDMACounter(dmaHandle, counter->m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "AddCounter");
FRC_CheckErrorStatus(status, "AddCounter");
}
void DMA::AddCounterPeriod(const Counter* counter) {
int32_t status = 0;
HAL_AddDMACounterPeriod(dmaHandle, counter->m_counter, &status);
FRC_CheckErrorStatus(status, "{}", "AddCounterPeriod");
FRC_CheckErrorStatus(status, "AddCounterPeriod");
}
void DMA::AddDigitalSource(const DigitalSource* digitalSource) {
int32_t status = 0;
HAL_AddDMADigitalSource(dmaHandle, digitalSource->GetPortHandleForRouting(),
&status);
FRC_CheckErrorStatus(status, "{}", "AddDigitalSource");
FRC_CheckErrorStatus(status, "AddDigitalSource");
}
void DMA::AddDutyCycle(const DutyCycle* dutyCycle) {
int32_t status = 0;
HAL_AddDMADutyCycle(dmaHandle, dutyCycle->m_handle, &status);
FRC_CheckErrorStatus(status, "{}", "AddDutyCycle");
FRC_CheckErrorStatus(status, "AddDutyCycle");
}
void DMA::AddAnalogInput(const AnalogInput* analogInput) {
int32_t status = 0;
HAL_AddDMAAnalogInput(dmaHandle, analogInput->m_port, &status);
FRC_CheckErrorStatus(status, "{}", "AddAnalogInput");
FRC_CheckErrorStatus(status, "AddAnalogInput");
}
void DMA::AddAveragedAnalogInput(const AnalogInput* analogInput) {
int32_t status = 0;
HAL_AddDMAAveragedAnalogInput(dmaHandle, analogInput->m_port, &status);
FRC_CheckErrorStatus(status, "{}", "AddAveragedAnalogInput");
FRC_CheckErrorStatus(status, "AddAveragedAnalogInput");
}
void DMA::AddAnalogAccumulator(const AnalogInput* analogInput) {
int32_t status = 0;
HAL_AddDMAAnalogAccumulator(dmaHandle, analogInput->m_port, &status);
FRC_CheckErrorStatus(status, "{}", "AddAnalogAccumulator");
FRC_CheckErrorStatus(status, "AddAnalogAccumulator");
}
int DMA::SetExternalTrigger(DigitalSource* source, bool rising, bool falling) {
@@ -114,7 +114,7 @@ int DMA::SetExternalTrigger(DigitalSource* source, bool rising, bool falling) {
static_cast<HAL_AnalogTriggerType>(
source->GetAnalogTriggerTypeForRouting()),
rising, falling, &status);
FRC_CheckErrorStatus(status, "{}", "SetExternalTrigger");
FRC_CheckErrorStatus(status, "SetExternalTrigger");
return idx;
}
@@ -124,7 +124,7 @@ int DMA::SetPwmEdgeTrigger(PWMMotorController* source, bool rising,
int32_t idx = HAL_SetDMAExternalTrigger(
dmaHandle, source->GetPwm()->m_handle,
HAL_AnalogTriggerType::HAL_Trigger_kInWindow, rising, falling, &status);
FRC_CheckErrorStatus(status, "{}", "SetPWmEdgeTrigger");
FRC_CheckErrorStatus(status, "SetPWmEdgeTrigger");
return idx;
}
@@ -133,30 +133,30 @@ int DMA::SetPwmEdgeTrigger(PWM* source, bool rising, bool falling) {
int32_t idx = HAL_SetDMAExternalTrigger(
dmaHandle, source->m_handle, HAL_AnalogTriggerType::HAL_Trigger_kInWindow,
rising, falling, &status);
FRC_CheckErrorStatus(status, "{}", "SetPWmEdgeTrigger");
FRC_CheckErrorStatus(status, "SetPWmEdgeTrigger");
return idx;
}
void DMA::ClearSensors() {
int32_t status = 0;
HAL_ClearDMASensors(dmaHandle, &status);
FRC_CheckErrorStatus(status, "{}", "ClearSensors");
FRC_CheckErrorStatus(status, "ClearSensors");
}
void DMA::ClearExternalTriggers() {
int32_t status = 0;
HAL_ClearDMAExternalTriggers(dmaHandle, &status);
FRC_CheckErrorStatus(status, "{}", "ClearExternalTriggers");
FRC_CheckErrorStatus(status, "ClearExternalTriggers");
}
void DMA::Start(int queueDepth) {
int32_t status = 0;
HAL_StartDMA(dmaHandle, queueDepth, &status);
FRC_CheckErrorStatus(status, "{}", "Start");
FRC_CheckErrorStatus(status, "Start");
}
void DMA::Stop() {
int32_t status = 0;
HAL_StopDMA(dmaHandle, &status);
FRC_CheckErrorStatus(status, "{}", "Stop");
FRC_CheckErrorStatus(status, "Stop");
}

View File

@@ -56,7 +56,7 @@ void DigitalGlitchFilter::DoAdd(DigitalSource* input, int requestedIndex) {
// We don't support GlitchFilters on AnalogTriggers.
if (input->IsAnalogTrigger()) {
throw FRC_MakeError(
-1, "{}", "Analog Triggers not supported for DigitalGlitchFilters");
-1, "Analog Triggers not supported for DigitalGlitchFilters");
}
int32_t status = 0;
HAL_SetFilterSelect(input->GetPortHandleForRouting(), requestedIndex,

View File

@@ -635,7 +635,7 @@ double DriverStation::GetMatchTime() {
double DriverStation::GetBatteryVoltage() {
int32_t status = 0;
double voltage = HAL_GetVinVoltage(&status);
FRC_CheckErrorStatus(status, "{}", "getVinVoltage");
FRC_CheckErrorStatus(status, "getVinVoltage");
return voltage;
}

View File

@@ -17,7 +17,7 @@ using namespace frc;
DutyCycle::DutyCycle(DigitalSource* source)
: m_source{source, wpi::NullDeleter<DigitalSource>()} {
if (!m_source) {
throw FRC_MakeError(err::NullParameter, "{}", "source");
throw FRC_MakeError(err::NullParameter, "source");
}
InitDutyCycle();
}
@@ -30,7 +30,7 @@ DutyCycle::DutyCycle(DigitalSource& source)
DutyCycle::DutyCycle(std::shared_ptr<DigitalSource> source)
: m_source{std::move(source)} {
if (!m_source) {
throw FRC_MakeError(err::NullParameter, "{}", "source");
throw FRC_MakeError(err::NullParameter, "source");
}
InitDutyCycle();
}

View File

@@ -105,7 +105,7 @@ units::turn_t DutyCycleEncoder::Get() const {
}
FRC_ReportError(
warn::Warning, "{}",
warn::Warning,
"Failed to read DutyCycle Encoder. Potential Speed Overrun. Returning "
"last value");
return m_lastPosition;

View File

@@ -31,10 +31,10 @@ Encoder::Encoder(DigitalSource* aSource, DigitalSource* bSource,
: m_aSource(aSource, wpi::NullDeleter<DigitalSource>()),
m_bSource(bSource, wpi::NullDeleter<DigitalSource>()) {
if (!m_aSource) {
throw FRC_MakeError(err::NullParameter, "{}", "aSource");
throw FRC_MakeError(err::NullParameter, "aSource");
}
if (!m_bSource) {
throw FRC_MakeError(err::NullParameter, "{}", "bSource");
throw FRC_MakeError(err::NullParameter, "bSource");
}
InitEncoder(reverseDirection, encodingType);
}
@@ -51,10 +51,10 @@ Encoder::Encoder(std::shared_ptr<DigitalSource> aSource,
EncodingType encodingType)
: m_aSource(std::move(aSource)), m_bSource(std::move(bSource)) {
if (!m_aSource) {
throw FRC_MakeError(err::NullParameter, "{}", "aSource");
throw FRC_MakeError(err::NullParameter, "aSource");
}
if (!m_bSource) {
throw FRC_MakeError(err::NullParameter, "{}", "bSource");
throw FRC_MakeError(err::NullParameter, "bSource");
}
InitEncoder(reverseDirection, encodingType);
}
@@ -62,100 +62,100 @@ Encoder::Encoder(std::shared_ptr<DigitalSource> aSource,
Encoder::~Encoder() {
int32_t status = 0;
HAL_FreeEncoder(m_encoder, &status);
FRC_ReportError(status, "{}", "FreeEncoder");
FRC_ReportError(status, "FreeEncoder");
}
int Encoder::Get() const {
int32_t status = 0;
int value = HAL_GetEncoder(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "Get");
FRC_CheckErrorStatus(status, "Get");
return value;
}
void Encoder::Reset() {
int32_t status = 0;
HAL_ResetEncoder(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "Reset");
FRC_CheckErrorStatus(status, "Reset");
}
units::second_t Encoder::GetPeriod() const {
int32_t status = 0;
double value = HAL_GetEncoderPeriod(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetPeriod");
FRC_CheckErrorStatus(status, "GetPeriod");
return units::second_t{value};
}
void Encoder::SetMaxPeriod(units::second_t maxPeriod) {
int32_t status = 0;
HAL_SetEncoderMaxPeriod(m_encoder, maxPeriod.value(), &status);
FRC_CheckErrorStatus(status, "{}", "SetMaxPeriod");
FRC_CheckErrorStatus(status, "SetMaxPeriod");
}
bool Encoder::GetStopped() const {
int32_t status = 0;
bool value = HAL_GetEncoderStopped(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetStopped");
FRC_CheckErrorStatus(status, "GetStopped");
return value;
}
bool Encoder::GetDirection() const {
int32_t status = 0;
bool value = HAL_GetEncoderDirection(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDirection");
FRC_CheckErrorStatus(status, "GetDirection");
return value;
}
int Encoder::GetRaw() const {
int32_t status = 0;
int value = HAL_GetEncoderRaw(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetRaw");
FRC_CheckErrorStatus(status, "GetRaw");
return value;
}
int Encoder::GetEncodingScale() const {
int32_t status = 0;
int val = HAL_GetEncoderEncodingScale(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetEncodingScale");
FRC_CheckErrorStatus(status, "GetEncodingScale");
return val;
}
double Encoder::GetDistance() const {
int32_t status = 0;
double value = HAL_GetEncoderDistance(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDistance");
FRC_CheckErrorStatus(status, "GetDistance");
return value;
}
double Encoder::GetRate() const {
int32_t status = 0;
double value = HAL_GetEncoderRate(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetRate");
FRC_CheckErrorStatus(status, "GetRate");
return value;
}
void Encoder::SetMinRate(double minRate) {
int32_t status = 0;
HAL_SetEncoderMinRate(m_encoder, minRate, &status);
FRC_CheckErrorStatus(status, "{}", "SetMinRate");
FRC_CheckErrorStatus(status, "SetMinRate");
}
void Encoder::SetDistancePerPulse(double distancePerPulse) {
int32_t status = 0;
HAL_SetEncoderDistancePerPulse(m_encoder, distancePerPulse, &status);
FRC_CheckErrorStatus(status, "{}", "SetDistancePerPulse");
FRC_CheckErrorStatus(status, "SetDistancePerPulse");
}
double Encoder::GetDistancePerPulse() const {
int32_t status = 0;
double distancePerPulse = HAL_GetEncoderDistancePerPulse(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetDistancePerPulse");
FRC_CheckErrorStatus(status, "GetDistancePerPulse");
return distancePerPulse;
}
void Encoder::SetReverseDirection(bool reverseDirection) {
int32_t status = 0;
HAL_SetEncoderReverseDirection(m_encoder, reverseDirection, &status);
FRC_CheckErrorStatus(status, "{}", "SetReverseDirection");
FRC_CheckErrorStatus(status, "SetReverseDirection");
}
void Encoder::SetSamplesToAverage(int samplesToAverage) {
@@ -167,13 +167,13 @@ void Encoder::SetSamplesToAverage(int samplesToAverage) {
}
int32_t status = 0;
HAL_SetEncoderSamplesToAverage(m_encoder, samplesToAverage, &status);
FRC_CheckErrorStatus(status, "{}", "SetSamplesToAverage");
FRC_CheckErrorStatus(status, "SetSamplesToAverage");
}
int Encoder::GetSamplesToAverage() const {
int32_t status = 0;
int result = HAL_GetEncoderSamplesToAverage(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetSamplesToAverage");
FRC_CheckErrorStatus(status, "GetSamplesToAverage");
return result;
}
@@ -192,7 +192,7 @@ void Encoder::SetIndexSource(const DigitalSource& source,
source.GetAnalogTriggerTypeForRouting()),
static_cast<HAL_EncoderIndexingType>(type),
&status);
FRC_CheckErrorStatus(status, "{}", "SetIndexSource");
FRC_CheckErrorStatus(status, "SetIndexSource");
}
void Encoder::SetSimDevice(HAL_SimDeviceHandle device) {
@@ -202,14 +202,14 @@ void Encoder::SetSimDevice(HAL_SimDeviceHandle device) {
int Encoder::GetFPGAIndex() const {
int32_t status = 0;
int val = HAL_GetEncoderFPGAIndex(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetFPGAIndex");
FRC_CheckErrorStatus(status, "GetFPGAIndex");
return val;
}
void Encoder::InitSendable(wpi::SendableBuilder& builder) {
int32_t status = 0;
HAL_EncoderEncodingType type = HAL_GetEncoderEncodingType(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "GetEncodingType");
FRC_CheckErrorStatus(status, "GetEncodingType");
if (type == HAL_EncoderEncodingType::HAL_Encoder_k4X) {
builder.SetSmartDashboardType("Quadrature Encoder");
} else {
@@ -236,7 +236,7 @@ void Encoder::InitEncoder(bool reverseDirection, EncodingType encodingType) {
m_bSource->GetAnalogTriggerTypeForRouting()),
reverseDirection, static_cast<HAL_EncoderEncodingType>(encodingType),
&status);
FRC_CheckErrorStatus(status, "{}", "InitEncoder");
FRC_CheckErrorStatus(status, "InitEncoder");
HAL_Report(HALUsageReporting::kResourceType_Encoder, GetFPGAIndex() + 1,
encodingType);
@@ -246,6 +246,6 @@ void Encoder::InitEncoder(bool reverseDirection, EncodingType encodingType) {
double Encoder::DecodingScaleFactor() const {
int32_t status = 0;
double val = HAL_GetEncoderDecodingScaleFactor(m_encoder, &status);
FRC_CheckErrorStatus(status, "{}", "DecodingScaleFactor");
FRC_CheckErrorStatus(status, "DecodingScaleFactor");
return val;
}

View File

@@ -18,7 +18,7 @@ I2C::I2C(Port port, int deviceAddress)
int32_t status = 0;
if (port == I2C::Port::kOnboard) {
FRC_ReportError(warn::Warning, "{}",
FRC_ReportError(warn::Warning,
"Onboard I2C port is subject to system lockups. See Known "
"Issues page for "
"details");
@@ -74,7 +74,7 @@ bool I2C::Read(int registerAddress, int count, uint8_t* buffer) {
throw FRC_MakeError(err::ParameterOutOfRange, "count {}", count);
}
if (!buffer) {
throw FRC_MakeError(err::NullParameter, "{}", "buffer");
throw FRC_MakeError(err::NullParameter, "buffer");
}
uint8_t regAddr = registerAddress;
return Transaction(&regAddr, sizeof(regAddr), buffer, count);
@@ -85,7 +85,7 @@ bool I2C::ReadOnly(int count, uint8_t* buffer) {
throw FRC_MakeError(err::ParameterOutOfRange, "count {}", count);
}
if (!buffer) {
throw FRC_MakeError(err::NullParameter, "{}", "buffer");
throw FRC_MakeError(err::NullParameter, "buffer");
}
return HAL_ReadI2C(m_port, m_deviceAddress, buffer, count) < 0;
}

View File

@@ -18,12 +18,12 @@ using namespace frc;
Notifier::Notifier(std::function<void()> handler) {
if (!handler) {
throw FRC_MakeError(err::NullParameter, "{}", "handler");
throw FRC_MakeError(err::NullParameter, "handler");
}
m_handler = handler;
int32_t status = 0;
m_notifier = HAL_InitializeNotifier(&status);
FRC_CheckErrorStatus(status, "{}", "InitializeNotifier");
FRC_CheckErrorStatus(status, "InitializeNotifier");
m_thread = std::thread([=, this] {
for (;;) {
@@ -60,12 +60,12 @@ Notifier::Notifier(std::function<void()> handler) {
Notifier::Notifier(int priority, std::function<void()> handler) {
if (!handler) {
throw FRC_MakeError(err::NullParameter, "{}", "handler");
throw FRC_MakeError(err::NullParameter, "handler");
}
m_handler = handler;
int32_t status = 0;
m_notifier = HAL_InitializeNotifier(&status);
FRC_CheckErrorStatus(status, "{}", "InitializeNotifier");
FRC_CheckErrorStatus(status, "InitializeNotifier");
m_thread = std::thread([=, this] {
int32_t status = 0;
@@ -106,7 +106,7 @@ Notifier::~Notifier() {
// atomically set handle to 0, then clean
HAL_NotifierHandle handle = m_notifier.exchange(0);
HAL_StopNotifier(handle, &status);
FRC_ReportError(status, "{}", "StopNotifier");
FRC_ReportError(status, "StopNotifier");
// Join the thread to ensure the handler has exited.
if (m_thread.joinable()) {
@@ -172,7 +172,7 @@ void Notifier::Stop() {
m_periodic = false;
int32_t status = 0;
HAL_CancelNotifierAlarm(m_notifier, &status);
FRC_CheckErrorStatus(status, "{}", "CancelNotifierAlarm");
FRC_CheckErrorStatus(status, "CancelNotifierAlarm");
}
void Notifier::UpdateAlarm(uint64_t triggerTime) {
@@ -183,7 +183,7 @@ void Notifier::UpdateAlarm(uint64_t triggerTime) {
return;
}
HAL_UpdateNotifierAlarm(notifier, triggerTime, &status);
FRC_CheckErrorStatus(status, "{}", "UpdateNotifierAlarm");
FRC_CheckErrorStatus(status, "UpdateNotifierAlarm");
}
void Notifier::UpdateAlarm() {

View File

@@ -148,7 +148,7 @@ void PneumaticHub::EnableCompressorAnalog(
units::pounds_per_square_inch_t minPressure,
units::pounds_per_square_inch_t maxPressure) {
if (minPressure >= maxPressure) {
throw FRC_MakeError(err::InvalidParameter, "{}",
throw FRC_MakeError(err::InvalidParameter,
"maxPressure must be greater than minPresure");
}
if (minPressure < 0_psi || minPressure > 120_psi) {
@@ -173,7 +173,7 @@ void PneumaticHub::EnableCompressorHybrid(
units::pounds_per_square_inch_t minPressure,
units::pounds_per_square_inch_t maxPressure) {
if (minPressure >= maxPressure) {
throw FRC_MakeError(err::InvalidParameter, "{}",
throw FRC_MakeError(err::InvalidParameter,
"maxPressure must be greater than minPresure");
}
if (minPressure < 0_psi || minPressure > 120_psi) {

View File

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

View File

@@ -77,7 +77,7 @@ SerialPort::SerialPort(int baudRate, std::string_view portName, Port port,
SerialPort::~SerialPort() {
int32_t status = 0;
HAL_CloseSerial(m_portHandle, &status);
FRC_ReportError(status, "{}", "CloseSerial");
FRC_ReportError(status, "CloseSerial");
}
void SerialPort::SetFlowControl(SerialPort::FlowControl flowControl) {
@@ -96,20 +96,20 @@ void SerialPort::EnableTermination(char terminator) {
void SerialPort::DisableTermination() {
int32_t status = 0;
HAL_DisableSerialTermination(m_portHandle, &status);
FRC_CheckErrorStatus(status, "{}", "DisableTermination");
FRC_CheckErrorStatus(status, "DisableTermination");
}
int SerialPort::GetBytesReceived() {
int32_t status = 0;
int retVal = HAL_GetSerialBytesReceived(m_portHandle, &status);
FRC_CheckErrorStatus(status, "{}", "GetBytesReceived");
FRC_CheckErrorStatus(status, "GetBytesReceived");
return retVal;
}
int SerialPort::Read(char* buffer, int count) {
int32_t status = 0;
int retVal = HAL_ReadSerial(m_portHandle, buffer, count, &status);
FRC_CheckErrorStatus(status, "{}", "Read");
FRC_CheckErrorStatus(status, "Read");
return retVal;
}
@@ -121,14 +121,14 @@ int SerialPort::Write(std::string_view buffer) {
int32_t status = 0;
int retVal =
HAL_WriteSerial(m_portHandle, buffer.data(), buffer.size(), &status);
FRC_CheckErrorStatus(status, "{}", "Write");
FRC_CheckErrorStatus(status, "Write");
return retVal;
}
void SerialPort::SetTimeout(units::second_t timeout) {
int32_t status = 0;
HAL_SetSerialTimeout(m_portHandle, timeout.value(), &status);
FRC_CheckErrorStatus(status, "{}", "SetTimeout");
FRC_CheckErrorStatus(status, "SetTimeout");
}
void SerialPort::SetReadBufferSize(int size) {
@@ -152,11 +152,11 @@ void SerialPort::SetWriteBufferMode(SerialPort::WriteBufferMode mode) {
void SerialPort::Flush() {
int32_t status = 0;
HAL_FlushSerial(m_portHandle, &status);
FRC_CheckErrorStatus(status, "{}", "Flush");
FRC_CheckErrorStatus(status, "Flush");
}
void SerialPort::Reset() {
int32_t status = 0;
HAL_ClearSerial(m_portHandle, &status);
FRC_CheckErrorStatus(status, "{}", "Reset");
FRC_CheckErrorStatus(status, "Reset");
}

View File

@@ -21,7 +21,7 @@ SynchronousInterrupt::SynchronousInterrupt(DigitalSource& source)
SynchronousInterrupt::SynchronousInterrupt(DigitalSource* source)
: m_source{source, wpi::NullDeleter<DigitalSource>()} {
if (m_source == nullptr) {
FRC_CheckErrorStatus(frc::err::NullParameter, "{}", "Source is null");
FRC_CheckErrorStatus(frc::err::NullParameter, "Source is null");
} else {
InitSynchronousInterrupt();
}
@@ -30,7 +30,7 @@ SynchronousInterrupt::SynchronousInterrupt(
std::shared_ptr<DigitalSource> source)
: m_source{std::move(source)} {
if (m_source == nullptr) {
FRC_CheckErrorStatus(frc::err::NullParameter, "{}", "Source is null");
FRC_CheckErrorStatus(frc::err::NullParameter, "Source is null");
} else {
InitSynchronousInterrupt();
}
@@ -39,14 +39,14 @@ SynchronousInterrupt::SynchronousInterrupt(
void SynchronousInterrupt::InitSynchronousInterrupt() {
int32_t status = 0;
m_handle = HAL_InitializeInterrupts(&status);
FRC_CheckErrorStatus(status, "{}", "Interrupt failed to initialize");
FRC_CheckErrorStatus(status, "Interrupt failed to initialize");
HAL_RequestInterrupts(m_handle, m_source->GetPortHandleForRouting(),
static_cast<HAL_AnalogTriggerType>(
m_source->GetAnalogTriggerTypeForRouting()),
&status);
FRC_CheckErrorStatus(status, "{}", "Interrupt request failed");
FRC_CheckErrorStatus(status, "Interrupt request failed");
HAL_SetInterruptUpSourceEdge(m_handle, true, false, &status);
FRC_CheckErrorStatus(status, "{}", "Interrupt setting up source edge failed");
FRC_CheckErrorStatus(status, "Interrupt setting up source edge failed");
}
SynchronousInterrupt::~SynchronousInterrupt() {
@@ -79,19 +79,19 @@ void SynchronousInterrupt::SetInterruptEdges(bool risingEdge,
bool fallingEdge) {
int32_t status = 0;
HAL_SetInterruptUpSourceEdge(m_handle, risingEdge, fallingEdge, &status);
FRC_CheckErrorStatus(status, "{}", "Interrupt setting edges failed");
FRC_CheckErrorStatus(status, "Interrupt setting edges failed");
}
void SynchronousInterrupt::WakeupWaitingInterrupt() {
int32_t status = 0;
HAL_ReleaseWaitingInterrupt(m_handle, &status);
FRC_CheckErrorStatus(status, "{}", "Interrupt wakeup failed");
FRC_CheckErrorStatus(status, "Interrupt wakeup failed");
}
units::second_t SynchronousInterrupt::GetRisingTimestamp() {
int32_t status = 0;
auto ts = HAL_ReadInterruptRisingTimestamp(m_handle, &status);
FRC_CheckErrorStatus(status, "{}", "Interrupt rising timestamp failed");
FRC_CheckErrorStatus(status, "Interrupt rising timestamp failed");
units::microsecond_t ms{static_cast<double>(ts)};
return ms;
}
@@ -99,7 +99,7 @@ units::second_t SynchronousInterrupt::GetRisingTimestamp() {
units::second_t SynchronousInterrupt::GetFallingTimestamp() {
int32_t status = 0;
auto ts = HAL_ReadInterruptFallingTimestamp(m_handle, &status);
FRC_CheckErrorStatus(status, "{}", "Interrupt falling timestamp failed");
FRC_CheckErrorStatus(status, "Interrupt falling timestamp failed");
units::microsecond_t ms{static_cast<double>(ts)};
return ms;
}

View File

@@ -16,7 +16,7 @@ int GetThreadPriority(std::thread& thread, bool* isRealTime) {
HAL_Bool rt = false;
auto native = thread.native_handle();
auto ret = HAL_GetThreadPriority(&native, &rt, &status);
FRC_CheckErrorStatus(status, "{}", "GetThreadPriority");
FRC_CheckErrorStatus(status, "GetThreadPriority");
*isRealTime = rt;
return ret;
}
@@ -25,7 +25,7 @@ int GetCurrentThreadPriority(bool* isRealTime) {
int32_t status = 0;
HAL_Bool rt = false;
auto ret = HAL_GetCurrentThreadPriority(&rt, &status);
FRC_CheckErrorStatus(status, "{}", "GetCurrentThreadPriority");
FRC_CheckErrorStatus(status, "GetCurrentThreadPriority");
*isRealTime = rt;
return ret;
}
@@ -34,14 +34,14 @@ bool SetThreadPriority(std::thread& thread, bool realTime, int priority) {
int32_t status = 0;
auto native = thread.native_handle();
auto ret = HAL_SetThreadPriority(&native, realTime, priority, &status);
FRC_CheckErrorStatus(status, "{}", "SetThreadPriority");
FRC_CheckErrorStatus(status, "SetThreadPriority");
return ret;
}
bool SetCurrentThreadPriority(bool realTime, int priority) {
int32_t status = 0;
auto ret = HAL_SetCurrentThreadPriority(realTime, priority, &status);
FRC_CheckErrorStatus(status, "{}", "SetCurrentThreadPriority");
FRC_CheckErrorStatus(status, "SetCurrentThreadPriority");
return ret;
}

View File

@@ -40,7 +40,7 @@ void TimedRobot::StartCompetition() {
HAL_UpdateNotifierAlarm(
m_notifier, static_cast<uint64_t>(callback.expirationTime * 1e6),
&status);
FRC_CheckErrorStatus(status, "{}", "UpdateNotifierAlarm");
FRC_CheckErrorStatus(status, "UpdateNotifierAlarm");
uint64_t curTime = HAL_WaitForNotifierAlarm(m_notifier, &status);
if (curTime == 0 || status != 0) {
@@ -76,7 +76,7 @@ TimedRobot::TimedRobot(units::second_t period) : IterativeRobotBase(period) {
int32_t status = 0;
m_notifier = HAL_InitializeNotifier(&status);
FRC_CheckErrorStatus(status, "{}", "InitializeNotifier");
FRC_CheckErrorStatus(status, "InitializeNotifier");
HAL_SetNotifierName(m_notifier, "TimedRobot", &status);
HAL_Report(HALUsageReporting::kResourceType_Framework,
@@ -87,7 +87,7 @@ TimedRobot::~TimedRobot() {
int32_t status = 0;
HAL_StopNotifier(m_notifier, &status);
FRC_ReportError(status, "{}", "StopNotifier");
FRC_ReportError(status, "StopNotifier");
HAL_CleanNotifier(m_notifier, &status);
}

View File

@@ -39,10 +39,10 @@ Ultrasonic::Ultrasonic(DigitalOutput* pingChannel, DigitalInput* echoChannel)
m_echoChannel(echoChannel, wpi::NullDeleter<DigitalInput>()),
m_counter(m_echoChannel) {
if (!pingChannel) {
throw FRC_MakeError(err::NullParameter, "{}", "pingChannel");
throw FRC_MakeError(err::NullParameter, "pingChannel");
}
if (!echoChannel) {
throw FRC_MakeError(err::NullParameter, "{}", "echoChannel");
throw FRC_MakeError(err::NullParameter, "echoChannel");
}
Initialize();
}
@@ -86,7 +86,7 @@ int Ultrasonic::GetEchoChannel() const {
void Ultrasonic::Ping() {
if (m_automaticEnabled) {
throw FRC_MakeError(err::IncompatibleMode, "{}",
throw FRC_MakeError(err::IncompatibleMode,
"cannot call Ping() in automatic mode");
}

View File

@@ -47,7 +47,7 @@ class Watchdog::Impl {
Watchdog::Impl::Impl() {
int32_t status = 0;
m_notifier = HAL_InitializeNotifier(&status);
FRC_CheckErrorStatus(status, "{}", "starting watchdog notifier");
FRC_CheckErrorStatus(status, "starting watchdog notifier");
HAL_SetNotifierName(m_notifier, "Watchdog", &status);
m_thread = std::thread([=, this] { Main(); });
@@ -58,7 +58,7 @@ Watchdog::Impl::~Impl() {
// atomically set handle to 0, then clean
HAL_NotifierHandle handle = m_notifier.exchange(0);
HAL_StopNotifier(handle, &status);
FRC_ReportError(status, "{}", "stopping watchdog notifier");
FRC_ReportError(status, "stopping watchdog notifier");
// Join the thread to ensure the handler has exited.
if (m_thread.joinable()) {
@@ -84,7 +84,7 @@ void Watchdog::Impl::UpdateAlarm() {
1e6),
&status);
}
FRC_CheckErrorStatus(status, "{}", "updating watchdog notifier alarm");
FRC_CheckErrorStatus(status, "updating watchdog notifier alarm");
}
void Watchdog::Impl::Main() {

View File

@@ -24,10 +24,10 @@ ExternalDirectionCounter::ExternalDirectionCounter(
std::shared_ptr<DigitalSource> countSource,
std::shared_ptr<DigitalSource> directionSource) {
if (countSource == nullptr) {
throw FRC_MakeError(err::NullParameter, "{}", "countSource");
throw FRC_MakeError(err::NullParameter, "countSource");
}
if (directionSource == nullptr) {
throw FRC_MakeError(err::NullParameter, "{}", "directionSource");
throw FRC_MakeError(err::NullParameter, "directionSource");
}
m_countSource = countSource;

View File

@@ -19,7 +19,7 @@ Tachometer::Tachometer(DigitalSource& source)
: Tachometer({&source, wpi::NullDeleter<DigitalSource>()}) {}
Tachometer::Tachometer(std::shared_ptr<DigitalSource> source) {
if (source == nullptr) {
throw FRC_MakeError(err::NullParameter, "{}", "source");
throw FRC_MakeError(err::NullParameter, "source");
}
m_source = source;

View File

@@ -39,8 +39,7 @@ void RecordingController::AddEventMarker(
std::string_view name, std::string_view description,
ShuffleboardEventImportance importance) {
if (name.empty()) {
FRC_ReportError(err::Error, "{}",
"Shuffleboard event name was not specified");
FRC_ReportError(err::Error, "Shuffleboard event name was not specified");
return;
}
m_eventsTable->GetSubTable(name)->GetEntry("Info").SetStringArray(

View File

@@ -70,7 +70,7 @@ ComplexWidget& ShuffleboardContainer::Add(std::string_view title,
ComplexWidget& ShuffleboardContainer::Add(wpi::Sendable& sendable) {
auto name = wpi::SendableRegistry::GetName(&sendable);
if (name.empty()) {
FRC_ReportError(err::Error, "{}", "Sendable must have a name");
FRC_ReportError(err::Error, "Sendable must have a name");
}
return Add(name, sendable);
}

View File

@@ -76,7 +76,7 @@ nt::NetworkTableEntry SmartDashboard::GetEntry(std::string_view key) {
void SmartDashboard::PutData(std::string_view key, wpi::Sendable* data) {
if (!data) {
throw FRC_MakeError(err::NullParameter, "{}", "value");
throw FRC_MakeError(err::NullParameter, "value");
}
auto& inst = GetInstance();
std::scoped_lock lock(inst.tablesToDataMutex);
@@ -96,7 +96,7 @@ void SmartDashboard::PutData(std::string_view key, wpi::Sendable* data) {
void SmartDashboard::PutData(wpi::Sendable* value) {
if (!value) {
throw FRC_MakeError(err::NullParameter, "{}", "value");
throw FRC_MakeError(err::NullParameter, "value");
}
auto name = wpi::SendableRegistry::GetName(value);
if (!name.empty()) {