25 #define SPI_HAS_TRANSACTION
39 SPISettings(uint32_t clock, BitOrder bitOrder, SPIMode dataMode) {
40 if (__builtin_constant_p(clock)) {
41 init_AlwaysInline(clock, bitOrder, dataMode);
43 init_MightInline(clock, bitOrder, dataMode);
47 SPISettings(uint32_t clock, BitOrder bitOrder,
int dataMode) {
48 if (__builtin_constant_p(clock)) {
49 init_AlwaysInline(clock, bitOrder, (SPIMode)dataMode);
51 init_MightInline(clock, bitOrder, (SPIMode)dataMode);
56 SPISettings() { init_AlwaysInline(4000000, MSBFIRST, SPI_MODE0); }
60 if ((this->clockFreq == rhs.clockFreq) &&
61 (this->bitOrder == rhs.bitOrder) &&
62 (this->dataMode == rhs.dataMode)) {
70 return !(*
this == rhs);
73 uint32_t getClockFreq()
const {
76 SPIMode getDataMode()
const {
79 BitOrder getBitOrder()
const {
84 void init_MightInline(uint32_t clock, BitOrder bitOrder, SPIMode dataMode) {
85 init_AlwaysInline(clock, bitOrder, dataMode);
89 void init_AlwaysInline(uint32_t clock, BitOrder bitOrder, SPIMode dataMode) __attribute__((__always_inline__)) {
90 this->clockFreq = clock;
91 this->dataMode = dataMode;
92 this->bitOrder = bitOrder;
109 virtual uint8_t transfer(uint8_t data) = 0;
110 virtual uint16_t transfer16(uint16_t data) = 0;
111 virtual void transfer(
void *buf,
size_t count) = 0;
114 virtual void usingInterrupt(
int interruptNumber) = 0;
115 virtual void notUsingInterrupt(
int interruptNumber) = 0;
116 virtual void beginTransaction(
SPISettings settings) = 0;
117 virtual void endTransaction(
void) = 0;
120 virtual void attachInterrupt() = 0;
121 virtual void detachInterrupt() = 0;
123 virtual void begin() = 0;
124 virtual void end() = 0;
Definition: HardwareSPI.h:105
Definition: HardwareSPI.h:37