Splits HAL Digital and Analog Headers into multiple headers (#52)

The Digital and Analog headers (and the implementations, but that will
be moved over later) are just too big and congested. This splits those
headers, and then changes the few things that needed to be changed in
WPILib to get the code working again. No function changes were made in
this commit.
This commit is contained in:
Thad House
2016-05-24 00:58:10 -07:00
committed by Peter Johnson
parent 9e99df1cf7
commit 6d9b3b0aaa
27 changed files with 320 additions and 260 deletions

View File

@@ -1,86 +0,0 @@
#pragma once
#include <stdint.h>
enum AnalogTriggerType {
kInWindow = 0,
kState = 1,
kRisingPulse = 2,
kFallingPulse = 3
};
extern "C" {
// Analog output functions
void* initializeAnalogOutputPort(void* port_pointer, int32_t* status);
void freeAnalogOutputPort(void* analog_port_pointer);
void setAnalogOutput(void* analog_port_pointer, double voltage,
int32_t* status);
double getAnalogOutput(void* analog_port_pointer, int32_t* status);
bool checkAnalogOutputChannel(uint32_t pin);
// Analog input functions
void* initializeAnalogInputPort(void* port_pointer, int32_t* status);
void freeAnalogInputPort(void* analog_port_pointer);
bool checkAnalogModule(uint8_t module);
bool checkAnalogInputChannel(uint32_t pin);
void setAnalogSampleRate(double samplesPerSecond, int32_t* status);
float getAnalogSampleRate(int32_t* status);
void setAnalogAverageBits(void* analog_port_pointer, uint32_t bits,
int32_t* status);
uint32_t getAnalogAverageBits(void* analog_port_pointer, int32_t* status);
void setAnalogOversampleBits(void* analog_port_pointer, uint32_t bits,
int32_t* status);
uint32_t getAnalogOversampleBits(void* analog_port_pointer, int32_t* status);
int16_t getAnalogValue(void* analog_port_pointer, int32_t* status);
int32_t getAnalogAverageValue(void* analog_port_pointer, int32_t* status);
int32_t getAnalogVoltsToValue(void* analog_port_pointer, double voltage,
int32_t* status);
float getAnalogVoltage(void* analog_port_pointer, int32_t* status);
float getAnalogAverageVoltage(void* analog_port_pointer, int32_t* status);
uint32_t getAnalogLSBWeight(void* analog_port_pointer, int32_t* status);
int32_t getAnalogOffset(void* analog_port_pointer, int32_t* status);
bool isAccumulatorChannel(void* analog_port_pointer, int32_t* status);
void initAccumulator(void* analog_port_pointer, int32_t* status);
void resetAccumulator(void* analog_port_pointer, int32_t* status);
void setAccumulatorCenter(void* analog_port_pointer, int32_t center,
int32_t* status);
void setAccumulatorDeadband(void* analog_port_pointer, int32_t deadband,
int32_t* status);
int64_t getAccumulatorValue(void* analog_port_pointer, int32_t* status);
uint32_t getAccumulatorCount(void* analog_port_pointer, int32_t* status);
void getAccumulatorOutput(void* analog_port_pointer, int64_t* value,
uint32_t* count, int32_t* status);
void* initializeAnalogTrigger(void* port_pointer, uint32_t* index,
int32_t* status);
void cleanAnalogTrigger(void* analog_trigger_pointer, int32_t* status);
void setAnalogTriggerLimitsRaw(void* analog_trigger_pointer, int32_t lower,
int32_t upper, int32_t* status);
void setAnalogTriggerLimitsVoltage(void* analog_trigger_pointer, double lower,
double upper, int32_t* status);
void setAnalogTriggerAveraged(void* analog_trigger_pointer,
bool useAveragedValue, int32_t* status);
void setAnalogTriggerFiltered(void* analog_trigger_pointer,
bool useFilteredValue, int32_t* status);
bool getAnalogTriggerInWindow(void* analog_trigger_pointer, int32_t* status);
bool getAnalogTriggerTriggerState(void* analog_trigger_pointer,
int32_t* status);
bool getAnalogTriggerOutput(void* analog_trigger_pointer,
AnalogTriggerType type, int32_t* status);
//// Float JNA Hack
// Float
int getAnalogSampleRateIntHack(int32_t* status);
int getAnalogVoltageIntHack(void* analog_port_pointer, int32_t* status);
int getAnalogAverageVoltageIntHack(void* analog_port_pointer, int32_t* status);
// Doubles
void setAnalogSampleRateIntHack(int samplesPerSecond, int32_t* status);
int32_t getAnalogVoltsToValueIntHack(void* analog_port_pointer, int voltage,
int32_t* status);
void setAnalogTriggerLimitsVoltageIntHack(void* analog_trigger_pointer,
int lower, int upper,
int32_t* status);
}

View File

@@ -0,0 +1,16 @@
#pragma once
#include <stdint.h>
extern "C" {
bool isAccumulatorChannel(void* analog_port_pointer, int32_t* status);
void initAccumulator(void* analog_port_pointer, int32_t* status);
void resetAccumulator(void* analog_port_pointer, int32_t* status);
void setAccumulatorCenter(void* analog_port_pointer, int32_t center,
int32_t* status);
void setAccumulatorDeadband(void* analog_port_pointer, int32_t deadband,
int32_t* status);
int64_t getAccumulatorValue(void* analog_port_pointer, int32_t* status);
uint32_t getAccumulatorCount(void* analog_port_pointer, int32_t* status);
void getAccumulatorOutput(void* analog_port_pointer, int64_t* value,
uint32_t* count, int32_t* status);
}

View File

@@ -0,0 +1,27 @@
#pragma once
#include <stdint.h>
extern "C" {
// Analog input functions
void* initializeAnalogInputPort(void* port_pointer, int32_t* status);
void freeAnalogInputPort(void* analog_port_pointer);
bool checkAnalogModule(uint8_t module);
bool checkAnalogInputChannel(uint32_t pin);
void setAnalogSampleRate(double samplesPerSecond, int32_t* status);
float getAnalogSampleRate(int32_t* status);
void setAnalogAverageBits(void* analog_port_pointer, uint32_t bits,
int32_t* status);
uint32_t getAnalogAverageBits(void* analog_port_pointer, int32_t* status);
void setAnalogOversampleBits(void* analog_port_pointer, uint32_t bits,
int32_t* status);
uint32_t getAnalogOversampleBits(void* analog_port_pointer, int32_t* status);
int16_t getAnalogValue(void* analog_port_pointer, int32_t* status);
int32_t getAnalogAverageValue(void* analog_port_pointer, int32_t* status);
int32_t getAnalogVoltsToValue(void* analog_port_pointer, double voltage,
int32_t* status);
float getAnalogVoltage(void* analog_port_pointer, int32_t* status);
float getAnalogAverageVoltage(void* analog_port_pointer, int32_t* status);
uint32_t getAnalogLSBWeight(void* analog_port_pointer, int32_t* status);
int32_t getAnalogOffset(void* analog_port_pointer, int32_t* status);
}

View File

@@ -0,0 +1,11 @@
#pragma once
#include <stdint.h>
extern "C" {
void* initializeAnalogOutputPort(void* port_pointer, int32_t* status);
void freeAnalogOutputPort(void* analog_port_pointer);
void setAnalogOutput(void* analog_port_pointer, double voltage,
int32_t* status);
double getAnalogOutput(void* analog_port_pointer, int32_t* status);
bool checkAnalogOutputChannel(uint32_t pin);
}

View File

@@ -0,0 +1,28 @@
#pragma once
#include <stdint.h>
enum AnalogTriggerType {
kInWindow = 0,
kState = 1,
kRisingPulse = 2,
kFallingPulse = 3
};
extern "C" {
void* initializeAnalogTrigger(void* port_pointer, uint32_t* index,
int32_t* status);
void cleanAnalogTrigger(void* analog_trigger_pointer, int32_t* status);
void setAnalogTriggerLimitsRaw(void* analog_trigger_pointer, int32_t lower,
int32_t upper, int32_t* status);
void setAnalogTriggerLimitsVoltage(void* analog_trigger_pointer, double lower,
double upper, int32_t* status);
void setAnalogTriggerAveraged(void* analog_trigger_pointer,
bool useAveragedValue, int32_t* status);
void setAnalogTriggerFiltered(void* analog_trigger_pointer,
bool useFilteredValue, int32_t* status);
bool getAnalogTriggerInWindow(void* analog_trigger_pointer, int32_t* status);
bool getAnalogTriggerTriggerState(void* analog_trigger_pointer,
int32_t* status);
bool getAnalogTriggerOutput(void* analog_trigger_pointer,
AnalogTriggerType type, int32_t* status);
}

46
hal/include/HAL/Counter.h Normal file
View File

@@ -0,0 +1,46 @@
#pragma once
#include <stdint.h>
enum Mode {
kTwoPulse = 0,
kSemiperiod = 1,
kPulseLength = 2,
kExternalDirection = 3
};
extern "C" {
void* initializeCounter(Mode mode, uint32_t* index, int32_t* status);
void freeCounter(void* counter_pointer, int32_t* status);
void setCounterAverageSize(void* counter_pointer, int32_t size,
int32_t* status);
void setCounterUpSource(void* counter_pointer, uint32_t pin, bool analogTrigger,
int32_t* status);
void setCounterUpSourceEdge(void* counter_pointer, bool risingEdge,
bool fallingEdge, int32_t* status);
void clearCounterUpSource(void* counter_pointer, int32_t* status);
void setCounterDownSource(void* counter_pointer, uint32_t pin,
bool analogTrigger, int32_t* status);
void setCounterDownSourceEdge(void* counter_pointer, bool risingEdge,
bool fallingEdge, int32_t* status);
void clearCounterDownSource(void* counter_pointer, int32_t* status);
void setCounterUpDownMode(void* counter_pointer, int32_t* status);
void setCounterExternalDirectionMode(void* counter_pointer, int32_t* status);
void setCounterSemiPeriodMode(void* counter_pointer, bool highSemiPeriod,
int32_t* status);
void setCounterPulseLengthMode(void* counter_pointer, double threshold,
int32_t* status);
int32_t getCounterSamplesToAverage(void* counter_pointer, int32_t* status);
void setCounterSamplesToAverage(void* counter_pointer, int samplesToAverage,
int32_t* status);
void resetCounter(void* counter_pointer, int32_t* status);
int32_t getCounter(void* counter_pointer, int32_t* status);
double getCounterPeriod(void* counter_pointer, int32_t* status);
void setCounterMaxPeriod(void* counter_pointer, double maxPeriod,
int32_t* status);
void setCounterUpdateWhenEmpty(void* counter_pointer, bool enabled,
int32_t* status);
bool getCounterStopped(void* counter_pointer, int32_t* status);
bool getCounterDirection(void* counter_pointer, int32_t* status);
void setCounterReverseDirection(void* counter_pointer, bool reverseDirection,
int32_t* status);
}

29
hal/include/HAL/DIO.h Normal file
View File

@@ -0,0 +1,29 @@
#pragma once
#include <stdint.h>
extern "C" {
void* initializeDigitalPort(void* port_pointer, int32_t* status);
void freeDigitalPort(void* digital_port_pointer);
void* allocatePWM(int32_t* status);
void freePWM(void* pwmGenerator, int32_t* status);
void setPWMRate(double rate, int32_t* status);
void setPWMDutyCycle(void* pwmGenerator, double dutyCycle, int32_t* status);
void setPWMOutputChannel(void* pwmGenerator, uint32_t pin, int32_t* status);
bool allocateDIO(void* digital_port_pointer, bool input, int32_t* status);
void freeDIO(void* digital_port_pointer, int32_t* status);
void setDIO(void* digital_port_pointer, short value, int32_t* status);
bool getDIO(void* digital_port_pointer, int32_t* status);
bool getDIODirection(void* digital_port_pointer, int32_t* status);
void pulse(void* digital_port_pointer, double pulseLength, int32_t* status);
bool isPulsing(void* digital_port_pointer, int32_t* status);
bool isAnyPulsing(int32_t* status);
void setFilterSelect(void* digital_port_pointer, int filter_index,
int32_t* status);
int getFilterSelect(void* digital_port_pointer, int32_t* status);
void setFilterPeriod(int filter_index, uint32_t value, int32_t* status);
uint32_t getFilterPeriod(int filter_index, int32_t* status);
}

View File

@@ -1,159 +0,0 @@
#pragma once
#include <stdint.h>
#include "HAL/cpp/priority_mutex.h"
enum Mode {
kTwoPulse = 0,
kSemiperiod = 1,
kPulseLength = 2,
kExternalDirection = 3
};
priority_recursive_mutex& spiGetSemaphore(uint8_t port);
extern "C" {
void* initializeDigitalPort(void* port_pointer, int32_t* status);
void freeDigitalPort(void* digital_port_pointer);
bool checkPWMChannel(void* digital_port_pointer);
bool checkRelayChannel(void* digital_port_pointer);
void setPWM(void* digital_port_pointer, unsigned short value, int32_t* status);
bool allocatePWMChannel(void* digital_port_pointer, int32_t* status);
void freePWMChannel(void* digital_port_pointer, int32_t* status);
unsigned short getPWM(void* digital_port_pointer, int32_t* status);
void latchPWMZero(void* digital_port_pointer, int32_t* status);
void setPWMPeriodScale(void* digital_port_pointer, uint32_t squelchMask,
int32_t* status);
void* allocatePWM(int32_t* status);
void freePWM(void* pwmGenerator, int32_t* status);
void setPWMRate(double rate, int32_t* status);
void setPWMDutyCycle(void* pwmGenerator, double dutyCycle, int32_t* status);
void setPWMOutputChannel(void* pwmGenerator, uint32_t pin, int32_t* status);
void setRelayForward(void* digital_port_pointer, bool on, int32_t* status);
void setRelayReverse(void* digital_port_pointer, bool on, int32_t* status);
bool getRelayForward(void* digital_port_pointer, int32_t* status);
bool getRelayReverse(void* digital_port_pointer, int32_t* status);
bool allocateDIO(void* digital_port_pointer, bool input, int32_t* status);
void freeDIO(void* digital_port_pointer, int32_t* status);
void setDIO(void* digital_port_pointer, short value, int32_t* status);
bool getDIO(void* digital_port_pointer, int32_t* status);
bool getDIODirection(void* digital_port_pointer, int32_t* status);
void pulse(void* digital_port_pointer, double pulseLength, int32_t* status);
bool isPulsing(void* digital_port_pointer, int32_t* status);
bool isAnyPulsing(int32_t* status);
void setFilterSelect(void* digital_port_pointer, int filter_index,
int32_t* status);
int getFilterSelect(void* digital_port_pointer, int32_t* status);
void setFilterPeriod(int filter_index, uint32_t value, int32_t* status);
uint32_t getFilterPeriod(int filter_index, int32_t* status);
void* initializeCounter(Mode mode, uint32_t* index, int32_t* status);
void freeCounter(void* counter_pointer, int32_t* status);
void setCounterAverageSize(void* counter_pointer, int32_t size,
int32_t* status);
void setCounterUpSource(void* counter_pointer, uint32_t pin, bool analogTrigger,
int32_t* status);
void setCounterUpSourceEdge(void* counter_pointer, bool risingEdge,
bool fallingEdge, int32_t* status);
void clearCounterUpSource(void* counter_pointer, int32_t* status);
void setCounterDownSource(void* counter_pointer, uint32_t pin,
bool analogTrigger, int32_t* status);
void setCounterDownSourceEdge(void* counter_pointer, bool risingEdge,
bool fallingEdge, int32_t* status);
void clearCounterDownSource(void* counter_pointer, int32_t* status);
void setCounterUpDownMode(void* counter_pointer, int32_t* status);
void setCounterExternalDirectionMode(void* counter_pointer, int32_t* status);
void setCounterSemiPeriodMode(void* counter_pointer, bool highSemiPeriod,
int32_t* status);
void setCounterPulseLengthMode(void* counter_pointer, double threshold,
int32_t* status);
int32_t getCounterSamplesToAverage(void* counter_pointer, int32_t* status);
void setCounterSamplesToAverage(void* counter_pointer, int samplesToAverage,
int32_t* status);
void resetCounter(void* counter_pointer, int32_t* status);
int32_t getCounter(void* counter_pointer, int32_t* status);
double getCounterPeriod(void* counter_pointer, int32_t* status);
void setCounterMaxPeriod(void* counter_pointer, double maxPeriod,
int32_t* status);
void setCounterUpdateWhenEmpty(void* counter_pointer, bool enabled,
int32_t* status);
bool getCounterStopped(void* counter_pointer, int32_t* status);
bool getCounterDirection(void* counter_pointer, int32_t* status);
void setCounterReverseDirection(void* counter_pointer, bool reverseDirection,
int32_t* status);
void* initializeEncoder(uint8_t port_a_module, uint32_t port_a_pin,
bool port_a_analog_trigger, uint8_t port_b_module,
uint32_t port_b_pin, bool port_b_analog_trigger,
bool reverseDirection, int32_t* index,
int32_t* status); // TODO: fix routing
void freeEncoder(void* encoder_pointer, int32_t* status);
void resetEncoder(void* encoder_pointer, int32_t* status);
int32_t getEncoder(void* encoder_pointer, int32_t* status); // Raw value
double getEncoderPeriod(void* encoder_pointer, int32_t* status);
void setEncoderMaxPeriod(void* encoder_pointer, double maxPeriod,
int32_t* status);
bool getEncoderStopped(void* encoder_pointer, int32_t* status);
bool getEncoderDirection(void* encoder_pointer, int32_t* status);
void setEncoderReverseDirection(void* encoder_pointer, bool reverseDirection,
int32_t* status);
void setEncoderSamplesToAverage(void* encoder_pointer,
uint32_t samplesToAverage, int32_t* status);
uint32_t getEncoderSamplesToAverage(void* encoder_pointer, int32_t* status);
void setEncoderIndexSource(void* encoder_pointer, uint32_t pin,
bool analogTrigger, bool activeHigh,
bool edgeSensitive, int32_t* status);
uint16_t getLoopTiming(int32_t* status);
void spiInitialize(uint8_t port, int32_t* status);
int32_t spiTransaction(uint8_t port, uint8_t* dataToSend, uint8_t* dataReceived,
uint8_t size);
int32_t spiWrite(uint8_t port, uint8_t* dataToSend, uint8_t sendSize);
int32_t spiRead(uint8_t port, uint8_t* buffer, uint8_t count);
void spiClose(uint8_t port);
void spiSetSpeed(uint8_t port, uint32_t speed);
void spiSetOpts(uint8_t port, int msb_first, int sample_on_trailing,
int clk_idle_high);
void spiSetChipSelectActiveHigh(uint8_t port, int32_t* status);
void spiSetChipSelectActiveLow(uint8_t port, int32_t* status);
int32_t spiGetHandle(uint8_t port);
void spiSetHandle(uint8_t port, int32_t handle);
void spiInitAccumulator(uint8_t port, uint32_t period, uint32_t cmd,
uint8_t xfer_size, uint32_t valid_mask,
uint32_t valid_value, uint8_t data_shift,
uint8_t data_size, bool is_signed, bool big_endian,
int32_t* status);
void spiFreeAccumulator(uint8_t port, int32_t* status);
void spiResetAccumulator(uint8_t port, int32_t* status);
void spiSetAccumulatorCenter(uint8_t port, int32_t center, int32_t* status);
void spiSetAccumulatorDeadband(uint8_t port, int32_t deadband, int32_t* status);
int32_t spiGetAccumulatorLastValue(uint8_t port, int32_t* status);
int64_t spiGetAccumulatorValue(uint8_t port, int32_t* status);
uint32_t spiGetAccumulatorCount(uint8_t port, int32_t* status);
double spiGetAccumulatorAverage(uint8_t port, int32_t* status);
void spiGetAccumulatorOutput(uint8_t port, int64_t* value, uint32_t* count,
int32_t* status);
void i2CInitialize(uint8_t port, int32_t* status);
int32_t i2CTransaction(uint8_t port, uint8_t deviceAddress, uint8_t* dataToSend,
uint8_t sendSize, uint8_t* dataReceived,
uint8_t receiveSize);
int32_t i2CWrite(uint8_t port, uint8_t deviceAddress, uint8_t* dataToSend,
uint8_t sendSize);
int32_t i2CRead(uint8_t port, uint8_t deviceAddress, uint8_t* buffer,
uint8_t count);
void i2CClose(uint8_t port);
//// Float JNA Hack
// double
void setPWMRateIntHack(int rate, int32_t* status);
void setPWMDutyCycleIntHack(void* pwmGenerator, int32_t dutyCycle,
int32_t* status);
}

26
hal/include/HAL/Encoder.h Normal file
View File

@@ -0,0 +1,26 @@
#pragma once
#include <stdint.h>
extern "C" {
void* initializeEncoder(uint8_t port_a_module, uint32_t port_a_pin,
bool port_a_analog_trigger, uint8_t port_b_module,
uint32_t port_b_pin, bool port_b_analog_trigger,
bool reverseDirection, int32_t* index,
int32_t* status); // TODO: fix routing
void freeEncoder(void* encoder_pointer, int32_t* status);
void resetEncoder(void* encoder_pointer, int32_t* status);
int32_t getEncoder(void* encoder_pointer, int32_t* status); // Raw value
double getEncoderPeriod(void* encoder_pointer, int32_t* status);
void setEncoderMaxPeriod(void* encoder_pointer, double maxPeriod,
int32_t* status);
bool getEncoderStopped(void* encoder_pointer, int32_t* status);
bool getEncoderDirection(void* encoder_pointer, int32_t* status);
void setEncoderReverseDirection(void* encoder_pointer, bool reverseDirection,
int32_t* status);
void setEncoderSamplesToAverage(void* encoder_pointer,
uint32_t samplesToAverage, int32_t* status);
uint32_t getEncoderSamplesToAverage(void* encoder_pointer, int32_t* status);
void setEncoderIndexSource(void* encoder_pointer, uint32_t pin,
bool analogTrigger, bool activeHigh,
bool edgeSensitive, int32_t* status);
}

View File

@@ -9,14 +9,24 @@
#include <cmath>
#include "Accelerometer.h"
#include "Analog.h"
#include "AnalogAccumulator.h"
#include "AnalogInput.h"
#include "AnalogOutput.h"
#include "AnalogTrigger.h"
#include "Compressor.h"
#include "Digital.h"
#include "Counter.h"
#include "DIO.h"
#include "Encoder.h"
#include "Errors.h"
#include "I2C.h"
#include "Interrupts.h"
#include "Notifier.h"
#include "PDP.h"
#include "PWM.h"
#include "Power.h"
#include "Relay.h"
#include "SPI.h"
#include "SPIAccumulator.h"
#include "SerialPort.h"
#include "Solenoid.h"

14
hal/include/HAL/I2C.h Normal file
View File

@@ -0,0 +1,14 @@
#pragma once
#include <stdint.h>
extern "C" {
void i2CInitialize(uint8_t port, int32_t* status);
int32_t i2CTransaction(uint8_t port, uint8_t deviceAddress, uint8_t* dataToSend,
uint8_t sendSize, uint8_t* dataReceived,
uint8_t receiveSize);
int32_t i2CWrite(uint8_t port, uint8_t deviceAddress, uint8_t* dataToSend,
uint8_t sendSize);
int32_t i2CRead(uint8_t port, uint8_t deviceAddress, uint8_t* buffer,
uint8_t count);
void i2CClose(uint8_t port);
}

15
hal/include/HAL/PWM.h Normal file
View File

@@ -0,0 +1,15 @@
#pragma once
#include <stdint.h>
extern "C" {
bool checkPWMChannel(void* digital_port_pointer);
void setPWM(void* digital_port_pointer, unsigned short value, int32_t* status);
bool allocatePWMChannel(void* digital_port_pointer, int32_t* status);
void freePWMChannel(void* digital_port_pointer, int32_t* status);
unsigned short getPWM(void* digital_port_pointer, int32_t* status);
void latchPWMZero(void* digital_port_pointer, int32_t* status);
void setPWMPeriodScale(void* digital_port_pointer, uint32_t squelchMask,
int32_t* status);
uint16_t getLoopTiming(int32_t* status);
}

11
hal/include/HAL/Relay.h Normal file
View File

@@ -0,0 +1,11 @@
#pragma once
#include <stdint.h>
extern "C" {
bool checkRelayChannel(void* digital_port_pointer);
void setRelayForward(void* digital_port_pointer, bool on, int32_t* status);
void setRelayReverse(void* digital_port_pointer, bool on, int32_t* status);
bool getRelayForward(void* digital_port_pointer, int32_t* status);
bool getRelayReverse(void* digital_port_pointer, int32_t* status);
}

38
hal/include/HAL/SPI.h Normal file
View File

@@ -0,0 +1,38 @@
#pragma once
#include <stdint.h>
#include "HAL/cpp/priority_mutex.h"
priority_recursive_mutex& spiGetSemaphore(uint8_t port);
extern "C" {
void spiInitialize(uint8_t port, int32_t* status);
int32_t spiTransaction(uint8_t port, uint8_t* dataToSend, uint8_t* dataReceived,
uint8_t size);
int32_t spiWrite(uint8_t port, uint8_t* dataToSend, uint8_t sendSize);
int32_t spiRead(uint8_t port, uint8_t* buffer, uint8_t count);
void spiClose(uint8_t port);
void spiSetSpeed(uint8_t port, uint32_t speed);
void spiSetOpts(uint8_t port, int msb_first, int sample_on_trailing,
int clk_idle_high);
void spiSetChipSelectActiveHigh(uint8_t port, int32_t* status);
void spiSetChipSelectActiveLow(uint8_t port, int32_t* status);
int32_t spiGetHandle(uint8_t port);
void spiSetHandle(uint8_t port, int32_t handle);
void spiInitAccumulator(uint8_t port, uint32_t period, uint32_t cmd,
uint8_t xfer_size, uint32_t valid_mask,
uint32_t valid_value, uint8_t data_shift,
uint8_t data_size, bool is_signed, bool big_endian,
int32_t* status);
void spiFreeAccumulator(uint8_t port, int32_t* status);
void spiResetAccumulator(uint8_t port, int32_t* status);
void spiSetAccumulatorCenter(uint8_t port, int32_t center, int32_t* status);
void spiSetAccumulatorDeadband(uint8_t port, int32_t deadband, int32_t* status);
int32_t spiGetAccumulatorLastValue(uint8_t port, int32_t* status);
int64_t spiGetAccumulatorValue(uint8_t port, int32_t* status);
uint32_t spiGetAccumulatorCount(uint8_t port, int32_t* status);
double spiGetAccumulatorAverage(uint8_t port, int32_t* status);
void spiGetAccumulatorOutput(uint8_t port, int64_t* value, uint32_t* count,
int32_t* status);
}

View File

@@ -0,0 +1,20 @@
#pragma once
#include <stdint.h>
extern "C" {
void spiInitAccumulator(uint8_t port, uint32_t period, uint32_t cmd,
uint8_t xfer_size, uint32_t valid_mask,
uint32_t valid_value, uint8_t data_shift,
uint8_t data_size, bool is_signed, bool big_endian,
int32_t* status);
void spiFreeAccumulator(uint8_t port, int32_t* status);
void spiResetAccumulator(uint8_t port, int32_t* status);
void spiSetAccumulatorCenter(uint8_t port, int32_t center, int32_t* status);
void spiSetAccumulatorDeadband(uint8_t port, int32_t deadband, int32_t* status);
int32_t spiGetAccumulatorLastValue(uint8_t port, int32_t* status);
int64_t spiGetAccumulatorValue(uint8_t port, int32_t* status);
uint32_t spiGetAccumulatorCount(uint8_t port, int32_t* status);
double spiGetAccumulatorAverage(uint8_t port, int32_t* status);
void spiGetAccumulatorOutput(uint8_t port, int64_t* value, uint32_t* count,
int32_t* status);
}

View File

@@ -5,7 +5,10 @@
/* the project. */
/*----------------------------------------------------------------------------*/
#include "HAL/Analog.h"
#include "HAL/AnalogAccumulator.h"
#include "HAL/AnalogInput.h"
#include "HAL/AnalogOutput.h"
#include "HAL/AnalogTrigger.h"
#include "ChipObject.h"
#include "FRC_NetworkCommunication/AICalibration.h"

View File

@@ -5,7 +5,14 @@
/* the project. */
/*----------------------------------------------------------------------------*/
#include "HAL/Digital.h"
#include "HAL/Counter.h"
#include "HAL/DIO.h"
#include "HAL/Encoder.h"
#include "HAL/I2C.h"
#include "HAL/PWM.h"
#include "HAL/Relay.h"
#include "HAL/SPI.h"
#include "HAL/SPIAccumulator.h"
#include <math.h>
#include <stdio.h>

View File

@@ -6,7 +6,6 @@
/*----------------------------------------------------------------------------*/
#include "I2C.h"
#include "HAL/Digital.h"
#include "HAL/HAL.h"
#include "WPIErrors.h"

View File

@@ -6,8 +6,7 @@
/*----------------------------------------------------------------------------*/
#include "SPI.h"
#include "HAL/Digital.h"
#include "HAL/HAL.h"
#include "WPIErrors.h"
#include <string.h>

View File

@@ -11,7 +11,10 @@
#include "edu_wpi_first_wpilibj_hal_AnalogJNI.h"
#include "HAL/Analog.h"
#include "HAL/AnalogInput.h"
#include "HAL/AnalogOutput.h"
#include "HAL/AnalogAccumulator.h"
#include "HAL/AnalogTrigger.h"
#include "HALUtil.h"
// set the logging level

View File

@@ -11,7 +11,7 @@
#include "edu_wpi_first_wpilibj_hal_CounterJNI.h"
#include "HAL/Digital.h"
#include "HAL/Counter.h"
#include "HAL/Errors.h"
#include "HALUtil.h"

View File

@@ -11,7 +11,8 @@
#include "edu_wpi_first_wpilibj_hal_DIOJNI.h"
#include "HAL/Digital.h"
#include "HAL/DIO.h"
#include "HAL/PWM.h"
#include "HALUtil.h"
// set the logging level

View File

@@ -11,7 +11,7 @@
#include "edu_wpi_first_wpilibj_hal_EncoderJNI.h"
#include "HAL/Digital.h"
#include "HAL/Encoder.h"
#include "HAL/Errors.h"
#include "HALUtil.h"

View File

@@ -11,7 +11,7 @@
#include "edu_wpi_first_wpilibj_hal_I2CJNI.h"
#include "HAL/Digital.h"
#include "HAL/I2C.h"
#include "HALUtil.h"
// set the logging level

View File

@@ -11,7 +11,8 @@
#include "edu_wpi_first_wpilibj_hal_PWMJNI.h"
#include "HAL/Digital.h"
#include "HAL/DIO.h"
#include "HAL/PWM.h"
#include "HALUtil.h"
// set the logging level

View File

@@ -11,7 +11,7 @@
#include "edu_wpi_first_wpilibj_hal_RelayJNI.h"
#include "HAL/Digital.h"
#include "HAL/Relay.h"
#include "HALUtil.h"
// set the logging level

View File

@@ -11,7 +11,8 @@
#include "edu_wpi_first_wpilibj_hal_SPIJNI.h"
#include "HAL/Digital.h"
#include "HAL/SPI.h"
#include "HAL/SPIAccumulator.h"
#include "HALUtil.h"
// set the logging level