Switches HAL to fixed length signed integers, and adds our own HAL_Bool Type (#155)

* Switches HAL to fixed length signed integers, and adds our own HAL_Bool type

* Replaces HAL Floats with Doubles

Doubles are just as fast as floats with optimizations turned on, so
switches to all doubles. All made doubles for consistency.

* Prepends HAL/ to HAL include files. Also fixes some range errors
This commit is contained in:
Thad House
2016-07-12 10:45:14 -07:00
committed by Peter Johnson
parent 4a98e68815
commit b51e85ae26
89 changed files with 900 additions and 795 deletions

View File

@@ -65,10 +65,10 @@ AnalogInput::~AnalogInput() {
*
* @return A sample straight from this channel.
*/
int16_t AnalogInput::GetValue() const {
int32_t AnalogInput::GetValue() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
int16_t value = HAL_GetAnalogValue(m_port, &status);
int32_t value = HAL_GetAnalogValue(m_port, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return value;
}
@@ -140,7 +140,7 @@ float AnalogInput::GetAverageVoltage() const {
*
* @return Least significant bit weight.
*/
uint32_t AnalogInput::GetLSBWeight() const {
int32_t AnalogInput::GetLSBWeight() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
int32_t lsbWeight = HAL_GetAnalogLSBWeight(m_port, &status);
@@ -184,7 +184,7 @@ uint32_t AnalogInput::GetChannel() const {
*
* @param bits Number of bits of averaging.
*/
void AnalogInput::SetAverageBits(uint32_t bits) {
void AnalogInput::SetAverageBits(int32_t bits) {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_SetAnalogAverageBits(m_port, bits, &status);
@@ -199,7 +199,7 @@ void AnalogInput::SetAverageBits(uint32_t bits) {
*
* @return Number of bits of averaging previously configured.
*/
uint32_t AnalogInput::GetAverageBits() const {
int32_t AnalogInput::GetAverageBits() const {
int32_t status = 0;
int32_t averageBits = HAL_GetAnalogAverageBits(m_port, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
@@ -216,7 +216,7 @@ uint32_t AnalogInput::GetAverageBits() const {
*
* @param bits Number of bits of oversampling.
*/
void AnalogInput::SetOversampleBits(uint32_t bits) {
void AnalogInput::SetOversampleBits(int32_t bits) {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_SetAnalogOversampleBits(m_port, bits, &status);
@@ -232,7 +232,7 @@ void AnalogInput::SetOversampleBits(uint32_t bits) {
*
* @return Number of bits of oversampling previously configured.
*/
uint32_t AnalogInput::GetOversampleBits() const {
int32_t AnalogInput::GetOversampleBits() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
int32_t oversampleBits = HAL_GetAnalogOversampleBits(m_port, &status);
@@ -348,10 +348,10 @@ int64_t AnalogInput::GetAccumulatorValue() const {
*
* @return The number of times samples from the channel were accumulated.
*/
uint32_t AnalogInput::GetAccumulatorCount() const {
int64_t AnalogInput::GetAccumulatorCount() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
uint32_t count = HAL_GetAccumulatorCount(m_port, &status);
int64_t count = HAL_GetAccumulatorCount(m_port, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return count;
}
@@ -365,7 +365,7 @@ uint32_t AnalogInput::GetAccumulatorCount() const {
* @param value Reference to the 64-bit accumulated output.
* @param count Reference to the number of accumulation cycles.
*/
void AnalogInput::GetAccumulatorOutput(int64_t& value, uint32_t& count) const {
void AnalogInput::GetAccumulatorOutput(int64_t& value, int64_t& count) const {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_GetAccumulatorOutput(m_port, &value, &count, &status);

View File

@@ -35,7 +35,7 @@ AnalogTrigger::AnalogTrigger(int32_t channel)
AnalogTrigger::AnalogTrigger(AnalogInput* input) {
m_analogInput = input;
int32_t status = 0;
uint32_t index = 0;
int32_t index = 0;
m_trigger = HAL_InitializeAnalogTrigger(input->m_port, &index, &status);
if (status != 0) {
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
@@ -128,8 +128,8 @@ void AnalogTrigger::SetFiltered(bool useFilteredValue) {
*
* @return The index of the analog trigger.
*/
uint32_t AnalogTrigger::GetIndex() const {
if (StatusIsFatal()) return std::numeric_limits<uint32_t>::max();
int32_t AnalogTrigger::GetIndex() const {
if (StatusIsFatal()) return -1;
return m_index;
}

View File

@@ -18,9 +18,9 @@
*
* @return The controller input voltage value in Volts
*/
double ControllerPower::GetInputVoltage() {
float ControllerPower::GetInputVoltage() {
int32_t status = 0;
double retVal = HAL_GetVinVoltage(&status);
float retVal = HAL_GetVinVoltage(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -30,9 +30,9 @@ double ControllerPower::GetInputVoltage() {
*
* @return The controller input current value in Amps
*/
double ControllerPower::GetInputCurrent() {
float ControllerPower::GetInputCurrent() {
int32_t status = 0;
double retVal = HAL_GetVinCurrent(&status);
float retVal = HAL_GetVinCurrent(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -42,9 +42,9 @@ double ControllerPower::GetInputCurrent() {
*
* @return The controller 6V rail voltage value in Volts
*/
double ControllerPower::GetVoltage6V() {
float ControllerPower::GetVoltage6V() {
int32_t status = 0;
double retVal = HAL_GetUserVoltage6V(&status);
float retVal = HAL_GetUserVoltage6V(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -54,9 +54,9 @@ double ControllerPower::GetVoltage6V() {
*
* @return The controller 6V rail output current value in Amps
*/
double ControllerPower::GetCurrent6V() {
float ControllerPower::GetCurrent6V() {
int32_t status = 0;
double retVal = HAL_GetUserCurrent6V(&status);
float retVal = HAL_GetUserCurrent6V(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -92,9 +92,9 @@ int ControllerPower::GetFaultCount6V() {
*
* @return The controller 5V rail voltage value in Volts
*/
double ControllerPower::GetVoltage5V() {
float ControllerPower::GetVoltage5V() {
int32_t status = 0;
double retVal = HAL_GetUserVoltage5V(&status);
float retVal = HAL_GetUserVoltage5V(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -104,9 +104,9 @@ double ControllerPower::GetVoltage5V() {
*
* @return The controller 5V rail output current value in Amps
*/
double ControllerPower::GetCurrent5V() {
float ControllerPower::GetCurrent5V() {
int32_t status = 0;
double retVal = HAL_GetUserCurrent5V(&status);
float retVal = HAL_GetUserCurrent5V(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -142,9 +142,9 @@ int ControllerPower::GetFaultCount5V() {
*
* @return The controller 3.3V rail voltage value in Volts
*/
double ControllerPower::GetVoltage3V3() {
float ControllerPower::GetVoltage3V3() {
int32_t status = 0;
double retVal = HAL_GetUserVoltage3V3(&status);
float retVal = HAL_GetUserVoltage3V3(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -154,9 +154,9 @@ double ControllerPower::GetVoltage3V3() {
*
* @return The controller 3.3V rail output current value in Amps
*/
double ControllerPower::GetCurrent3V3() {
float ControllerPower::GetCurrent3V3() {
int32_t status = 0;
double retVal = HAL_GetUserCurrent3V3(&status);
float retVal = HAL_GetUserCurrent3V3(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}

View File

@@ -64,7 +64,7 @@ DigitalOutput::~DigitalOutput() {
*
* @param value 1 (true) for high, 0 (false) for disabled
*/
void DigitalOutput::Set(uint32_t value) {
void DigitalOutput::Set(bool value) {
if (StatusIsFatal()) return;
int32_t status = 0;

View File

@@ -293,10 +293,10 @@ bool Encoder::GetDirection() const {
* The scale needed to convert a raw counter value into a number of encoder
* pulses.
*/
double Encoder::DecodingScaleFactor() const {
float Encoder::DecodingScaleFactor() const {
if (StatusIsFatal()) return 0.0;
int32_t status = 0;
double val = HAL_GetEncoderDecodingScaleFactor(m_encoder, &status);
float val = HAL_GetEncoderDecodingScaleFactor(m_encoder, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return val;
}
@@ -307,10 +307,10 @@ double Encoder::DecodingScaleFactor() const {
* @return The distance driven since the last reset as scaled by the value from
* SetDistancePerPulse().
*/
double Encoder::GetDistance() const {
float Encoder::GetDistance() const {
if (StatusIsFatal()) return 0.0;
int32_t status = 0;
double value = HAL_GetEncoderDistance(m_encoder, &status);
float value = HAL_GetEncoderDistance(m_encoder, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return value;
}
@@ -323,10 +323,10 @@ double Encoder::GetDistance() const {
*
* @return The current rate of the encoder.
*/
double Encoder::GetRate() const {
float Encoder::GetRate() const {
if (StatusIsFatal()) return 0.0;
int32_t status = 0;
double value = HAL_GetEncoderRate(m_encoder, &status);
float value = HAL_GetEncoderRate(m_encoder, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return value;
}
@@ -337,7 +337,7 @@ double Encoder::GetRate() const {
* @param minRate The minimum rate. The units are in distance per second as
* scaled by the value from SetDistancePerPulse().
*/
void Encoder::SetMinRate(double minRate) {
void Encoder::SetMinRate(float minRate) {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_SetEncoderMinRate(m_encoder, minRate, &status);
@@ -361,7 +361,7 @@ void Encoder::SetMinRate(double minRate) {
* @param distancePerPulse The scale factor that will be used to convert pulses
* to useful units.
*/
void Encoder::SetDistancePerPulse(double distancePerPulse) {
void Encoder::SetDistancePerPulse(float distancePerPulse) {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_SetEncoderDistancePerPulse(m_encoder, distancePerPulse, &status);

View File

@@ -97,8 +97,8 @@ void PWM::EnableDeadbandElimination(bool eliminateDeadband) {
* @param deadbandMin The low end of the deadband pulse width in ms
* @param min The minimum pulse width in ms
*/
void PWM::SetBounds(double max, double deadbandMax, double center,
double deadbandMin, double min) {
void PWM::SetBounds(float max, float deadbandMax, float center,
float deadbandMin, float min) {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_SetPWMConfig(m_handle, max, deadbandMax, center, deadbandMin, min,

View File

@@ -6,7 +6,7 @@
/*----------------------------------------------------------------------------*/
#include "PowerDistributionPanel.h"
#include "HAL/PDP.h"
#include "HAL/HAL.h"
#include "LiveWindow/LiveWindow.h"
#include "WPIErrors.h"
@@ -19,7 +19,13 @@ PowerDistributionPanel::PowerDistributionPanel() : PowerDistributionPanel(0) {}
*/
PowerDistributionPanel::PowerDistributionPanel(uint8_t module)
: m_module(module) {
HAL_InitializePDP(m_module);
int32_t status = 0;
HAL_InitializePDP(m_module, &status);
if (status != 0) {
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
m_module = -1;
return;
}
}
/**
@@ -27,10 +33,11 @@ PowerDistributionPanel::PowerDistributionPanel(uint8_t module)
*
* @return The voltage of the PDP in volts
*/
double PowerDistributionPanel::GetVoltage() const {
float PowerDistributionPanel::GetVoltage() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
double voltage = HAL_GetPDPVoltage(m_module, &status);
float voltage = HAL_GetPDPVoltage(m_module, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -44,10 +51,11 @@ double PowerDistributionPanel::GetVoltage() const {
*
* @return The temperature of the PDP in degrees Celsius
*/
double PowerDistributionPanel::GetTemperature() const {
float PowerDistributionPanel::GetTemperature() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
double temperature = HAL_GetPDPTemperature(m_module, &status);
float temperature = HAL_GetPDPTemperature(m_module, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -61,7 +69,8 @@ double PowerDistributionPanel::GetTemperature() const {
*
* @return The current of one of the PDP channels (channels 0-15) in Amperes
*/
double PowerDistributionPanel::GetCurrent(uint8_t channel) const {
float PowerDistributionPanel::GetCurrent(uint8_t channel) const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
if (!CheckPDPChannel(channel)) {
@@ -70,7 +79,7 @@ double PowerDistributionPanel::GetCurrent(uint8_t channel) const {
wpi_setWPIErrorWithContext(ChannelIndexOutOfRange, buf.str());
}
double current = HAL_GetPDPChannelCurrent(m_module, channel, &status);
float current = HAL_GetPDPChannelCurrent(m_module, channel, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -84,10 +93,11 @@ double PowerDistributionPanel::GetCurrent(uint8_t channel) const {
*
* @return The the total current drawn from the PDP channels in Amperes
*/
double PowerDistributionPanel::GetTotalCurrent() const {
float PowerDistributionPanel::GetTotalCurrent() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
double current = HAL_GetPDPTotalCurrent(m_module, &status);
float current = HAL_GetPDPTotalCurrent(m_module, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -101,10 +111,11 @@ double PowerDistributionPanel::GetTotalCurrent() const {
*
* @return The the total power drawn from the PDP channels in Watts
*/
double PowerDistributionPanel::GetTotalPower() const {
float PowerDistributionPanel::GetTotalPower() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
double power = HAL_GetPDPTotalPower(m_module, &status);
float power = HAL_GetPDPTotalPower(m_module, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -118,10 +129,11 @@ double PowerDistributionPanel::GetTotalPower() const {
*
* @return The the total energy drawn from the PDP channels in Joules
*/
double PowerDistributionPanel::GetTotalEnergy() const {
float PowerDistributionPanel::GetTotalEnergy() const {
if (StatusIsFatal()) return 0;
int32_t status = 0;
double energy = HAL_GetPDPTotalEnergy(m_module, &status);
float energy = HAL_GetPDPTotalEnergy(m_module, &status);
if (status) {
wpi_setWPIErrorWithContext(Timeout, "");
@@ -136,6 +148,7 @@ double PowerDistributionPanel::GetTotalEnergy() const {
* @see PowerDistributionPanel#GetTotalEnergy
*/
void PowerDistributionPanel::ResetTotalEnergy() {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_ResetPDPTotalEnergy(m_module, &status);
@@ -149,6 +162,7 @@ void PowerDistributionPanel::ResetTotalEnergy() {
* Remove all of the fault flags on the PDP.
*/
void PowerDistributionPanel::ClearStickyFaults() {
if (StatusIsFatal()) return;
int32_t status = 0;
HAL_ClearPDPStickyFaults(m_module, &status);

View File

@@ -49,9 +49,7 @@ void SPI::SetClockRate(double hz) { HAL_SetSPISpeed(m_port, hz); }
*/
void SPI::SetMSBFirst() {
m_msbFirst = true;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -60,9 +58,7 @@ void SPI::SetMSBFirst() {
*/
void SPI::SetLSBFirst() {
m_msbFirst = false;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -71,9 +67,7 @@ void SPI::SetLSBFirst() {
*/
void SPI::SetSampleDataOnFalling() {
m_sampleOnTrailing = true;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -82,9 +76,7 @@ void SPI::SetSampleDataOnFalling() {
*/
void SPI::SetSampleDataOnRising() {
m_sampleOnTrailing = false;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -93,9 +85,7 @@ void SPI::SetSampleDataOnRising() {
*/
void SPI::SetClockActiveLow() {
m_clk_idle_high = true;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -104,9 +94,7 @@ void SPI::SetClockActiveLow() {
*/
void SPI::SetClockActiveHigh() {
m_clk_idle_high = false;
HAL_SetSPIOpts(m_port, static_cast<int>(m_msbFirst),
static_cast<int>(m_sampleOnTrailing),
static_cast<int>(m_clk_idle_high));
HAL_SetSPIOpts(m_port, m_msbFirst, m_sampleOnTrailing, m_clk_idle_high);
}
/**
@@ -276,9 +264,9 @@ int64_t SPI::GetAccumulatorValue() const {
*
* @return The number of times samples from the channel were accumulated.
*/
uint32_t SPI::GetAccumulatorCount() const {
int64_t SPI::GetAccumulatorCount() const {
int32_t status = 0;
uint32_t retVal = HAL_GetSPIAccumulatorCount(m_port, &status);
int64_t retVal = HAL_GetSPIAccumulatorCount(m_port, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));
return retVal;
}
@@ -304,7 +292,7 @@ double SPI::GetAccumulatorAverage() const {
* @param value Pointer to the 64-bit accumulated output.
* @param count Pointer to the number of accumulation cycles.
*/
void SPI::GetAccumulatorOutput(int64_t& value, uint32_t& count) const {
void SPI::GetAccumulatorOutput(int64_t& value, int64_t& count) const {
int32_t status = 0;
HAL_GetSPIAccumulatorOutput(m_port, &value, &count, &status);
wpi_setErrorWithContext(status, HAL_GetErrorMessage(status));

View File

@@ -125,9 +125,9 @@ bool wpi_assertNotEqual_impl(int valueA, int valueB, const char* valueAString,
* For now, expect this to be competition year.
* @return FPGA Version number.
*/
uint16_t GetFPGAVersion() {
int32_t GetFPGAVersion() {
int32_t status = 0;
uint16_t version = HAL_GetFPGAVersion(&status);
int32_t version = HAL_GetFPGAVersion(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return version;
}
@@ -140,9 +140,9 @@ uint16_t GetFPGAVersion() {
* The 12 least significant bits are the Build Number.
* @return FPGA Revision number.
*/
uint32_t GetFPGARevision() {
int64_t GetFPGARevision() {
int32_t status = 0;
uint32_t revision = HAL_GetFPGARevision(&status);
int64_t revision = HAL_GetFPGARevision(&status);
wpi_setGlobalErrorWithContext(status, HAL_GetErrorMessage(status));
return revision;
}