Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/SPIFake.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@ uint8_t SPIClass::transfer(uint8_t data) {
return ArduinoFakeInstance(SPI)->transfer(data);
};

uint16_t SPIClass::transfer16(uint16_t data) {
return ArduinoFakeInstance(SPI)->transfer16(data);
};

void SPIClass::transfer(void *buf, size_t count) {
return ArduinoFakeInstance(SPI)->transfer(buf, count);
};
Expand Down
1 change: 1 addition & 0 deletions src/SPIFake.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@

struct SPIFake {
virtual uint8_t transfer(uint8_t data) = 0;
virtual uint16_t transfer16(uint16_t data) = 0;
virtual void transfer(void *buf, size_t count) = 0;

virtual void beginTransaction(SPISettings settings) = 0;
Expand Down
1 change: 1 addition & 0 deletions src/arduino/SPI.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ class SPIClass {

// Write to the SPI bus (MOSI pin) and also receive (MISO pin)
virtual uint8_t transfer(uint8_t data);
virtual uint16_t transfer16(uint16_t data);
virtual void transfer(void *buf, size_t count);

// After performing a group of transfers and releasing the chip select
Expand Down
4 changes: 4 additions & 0 deletions test/test_spi.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ namespace SpiTest {
void test_basics(void) {
SPISettings settings(4000000, MSBFIRST, SPI_MODE0);
uint8_t data = 0x01;
uint16_t data16 = 0x1234;
uint8_t buffer[] = {0x02, 0x03, 0x04};
uint8_t *ptr = buffer;

Expand All @@ -15,11 +16,13 @@ void test_basics(void) {
When(OverloadedMethod(ArduinoFake(SPI), beginTransaction, void(SPISettings)).Using(settings)).AlwaysReturn();
When(OverloadedMethod(ArduinoFake(SPI), endTransaction, void(void))).AlwaysReturn();
When(OverloadedMethod(ArduinoFake(SPI), transfer, uint8_t(uint8_t)).Using(data)).AlwaysReturn();
When(OverloadedMethod(ArduinoFake(SPI), transfer16, uint16_t(uint16_t)).Using(data16)).AlwaysReturn();
When(OverloadedMethod(ArduinoFake(SPI), transfer, void(void*, size_t)).Using(ptr, sizeof(buffer))).AlwaysReturn();

SPI.begin();
SPI.beginTransaction(settings);
SPI.transfer(data);
SPI.transfer16(data16);
SPI.transfer(buffer, sizeof(buffer));
SPI.endTransaction();
SPI.end();
Expand All @@ -29,6 +32,7 @@ void test_basics(void) {
Verify(OverloadedMethod(ArduinoFake(SPI), beginTransaction, void(SPISettings))).Once();
Verify(OverloadedMethod(ArduinoFake(SPI), endTransaction, void(void))).Once();
Verify(OverloadedMethod(ArduinoFake(SPI), transfer, uint8_t(uint8_t))).Once();
Verify(OverloadedMethod(ArduinoFake(SPI), transfer16, uint16_t(uint16_t))).Once();
Verify(OverloadedMethod(ArduinoFake(SPI), transfer, void(void*, size_t))).Once();
}

Expand Down