mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-07-05 03:21:42 +00:00
Port SPI to roboRIO. Java SPIDevice renamed to SPI and rewritten to match C++ API.
Change-Id: I9b2c05a05cbe443331a5b6da6a6d7c7be751a5e7
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#include "HAL/cpp/Synchronized.hpp"
|
||||
|
||||
enum Mode
|
||||
{
|
||||
@@ -12,18 +13,7 @@ enum Mode
|
||||
kPulseLength = 2,
|
||||
kExternalDirection = 3
|
||||
};
|
||||
enum tSPIConstants
|
||||
{
|
||||
kReceiveFIFODepth = 512,
|
||||
kTransmitFIFODepth = 512
|
||||
};
|
||||
enum tFrameMode
|
||||
{
|
||||
kChipSelect,
|
||||
kPreLatchPulse,
|
||||
kPostLatchPulse,
|
||||
kPreAndPostLatchPulse
|
||||
};
|
||||
|
||||
extern "C"
|
||||
{
|
||||
void* initializeDigitalPort(void* port_pointer, int32_t *status);
|
||||
@@ -112,39 +102,25 @@ extern "C"
|
||||
uint16_t getLoopTiming(int32_t *status);
|
||||
uint16_t getLoopTimingWithModule(uint8_t module, int32_t *status);
|
||||
|
||||
void* initializeSPI(uint8_t sclk_routing_module, uint32_t sclk_routing_pin,
|
||||
uint8_t mosi_routing_module, uint32_t mosi_routing_pin, uint8_t miso_routing_module,
|
||||
uint32_t miso_routing_pin, int32_t *status);
|
||||
void cleanSPI(void* spi_pointer, int32_t *status);
|
||||
void setSPIBitsPerWord(void* spi_pointer, uint32_t bits, int32_t *status);
|
||||
uint32_t getSPIBitsPerWord(void* spi_pointer, int32_t *status);
|
||||
void setSPIClockRate(void* spi_pointer, double hz, int32_t *status);
|
||||
void setSPIMSBFirst(void* spi_pointer, int32_t *status);
|
||||
void setSPILSBFirst(void* spi_pointer, int32_t *status);
|
||||
void setSPISampleDataOnFalling(void* spi_pointer, int32_t *status);
|
||||
void setSPISampleDataOnRising(void* spi_pointer, int32_t *status);
|
||||
void setSPISlaveSelect(void* spi_pointer, uint8_t ss_routing_module, uint32_t ss_routing_pin,
|
||||
int32_t *status);
|
||||
void setSPILatchMode(void* spi_pointer, tFrameMode mode, int32_t *status);
|
||||
tFrameMode getSPILatchMode(void* spi_pointer, int32_t *status);
|
||||
void setSPIFramePolarity(void* spi_pointer, bool activeLow, int32_t *status);
|
||||
bool getSPIFramePolarity(void* spi_pointer, int32_t *status);
|
||||
void setSPIClockActiveLow(void* spi_pointer, int32_t *status);
|
||||
void setSPIClockActiveHigh(void* spi_pointer, int32_t *status);
|
||||
void applySPIConfig(void* spi_pointer, int32_t *status);
|
||||
uint16_t getSPIOutputFIFOAvailable(void* spi_pointer, int32_t *status);
|
||||
uint16_t getSPINumReceived(void* spi_pointer, int32_t *status);
|
||||
bool isSPIDone(void* spi_pointer, int32_t *status);
|
||||
bool hadSPIReceiveOverflow(void* spi_pointer, int32_t *status);
|
||||
void writeSPI(void* spi_pointer, uint32_t data, int32_t *status);
|
||||
uint32_t readSPI(void* spi_pointer, bool initiate, int32_t *status);
|
||||
void resetSPI(void* spi_pointer, int32_t *status);
|
||||
void clearSPIReceivedData(void* spi_pointer, 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 spiSetBitsPerWord(uint8_t port, uint8_t bpw);
|
||||
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);
|
||||
MUTEX_ID spiGetSemaphore(uint8_t port);
|
||||
void spiSetSemaphore(uint8_t port, MUTEX_ID semaphore);
|
||||
|
||||
void i2CInitialize(uint8_t port, int32_t *status);
|
||||
int i2CTransaction(uint8_t port, uint8_t deviceAddress, uint8_t *dataToSend, uint8_t sendSize, uint8_t *dataReceived, uint8_t receiveSize);
|
||||
int i2CWrite(uint8_t port, uint8_t deviceAddress, uint8_t *dataToSend, uint8_t sendSize);
|
||||
int i2CRead(uint8_t port, uint8_t deviceAddress, uint8_t *buffer, uint8_t count);
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user