diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp index afec06ba0..a7cadf2ad 100644 --- a/src/mesh/RadioLibInterface.cpp +++ b/src/mesh/RadioLibInterface.cpp @@ -11,6 +11,17 @@ // FIXME, we default to 4MHz SPI, SPI mode 0, check if the datasheet says it can really do that static SPISettings spiSettings(4000000, MSBFIRST, SPI_MODE0); +#ifdef PORTDUINO + +void LockingModule::SPItransfer(uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes) +{ + concurrency::LockGuard g(spiLock); + + Module::SPItransfer(cmd, reg, dataOut, dataIn, numBytes); +} + +#else + void LockingModule::SPIbeginTransaction() { spiLock->lock(); @@ -25,6 +36,8 @@ void LockingModule::SPIendTransaction() Module::SPIendTransaction(); } +#endif + RadioLibInterface::RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy, SPIClass &spi, PhysicalLayer *_iface) : NotifiedWorkerThread("RadioIf"), module(cs, irq, rst, busy, spi, spiSettings), iface(_iface) diff --git a/src/mesh/RadioLibInterface.h b/src/mesh/RadioLibInterface.h index f940f8908..08aa84811 100644 --- a/src/mesh/RadioLibInterface.h +++ b/src/mesh/RadioLibInterface.h @@ -40,9 +40,13 @@ class LockingModule : public Module : Module(cs, irq, rst, gpio, spi, spiSettings) { } - + +#ifdef PORTDUINO + void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes) override; +#else void SPIbeginTransaction() override; void SPIendTransaction() override; +#endif }; class RadioLibInterface : public RadioInterface, protected concurrency::NotifiedWorkerThread