diff --git a/platformio.ini b/platformio.ini
index 6628cdb99..60e9fe68e 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -61,7 +61,8 @@ framework = arduino
lib_deps =
${env.lib_deps}
; Portduino is using meshtastic fork for now
- https://github.com/jgromes/RadioLib.git#3df3b092ebf412bd0b26524e7b296733bd6a62f7
+ https://github.com/jgromes/RadioLib.git
+
build_flags = ${env.build_flags} -Os
# -DRADIOLIB_GODMODE
build_src_filter = ${env.build_src_filter} -
@@ -94,6 +95,7 @@ build_src_filter =
${arduino_base.build_src_filter} -
upload_speed = 921600
debug_init_break = tbreak setup
+
# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
diff --git a/src/mesh/RadioLibInterface.cpp b/src/mesh/RadioLibInterface.cpp
index afe176656..afec06ba0 100644
--- a/src/mesh/RadioLibInterface.cpp
+++ b/src/mesh/RadioLibInterface.cpp
@@ -11,11 +11,18 @@
// 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);
-void LockingModule::SPItransfer(uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes)
+void LockingModule::SPIbeginTransaction()
{
- concurrency::LockGuard g(spiLock);
+ spiLock->lock();
- Module::SPItransfer(cmd, reg, dataOut, dataIn, numBytes);
+ Module::SPIbeginTransaction();
+}
+
+void LockingModule::SPIendTransaction()
+{
+ spiLock->unlock();
+
+ Module::SPIendTransaction();
}
RadioLibInterface::RadioLibInterface(RADIOLIB_PIN_TYPE cs, RADIOLIB_PIN_TYPE irq, RADIOLIB_PIN_TYPE rst, RADIOLIB_PIN_TYPE busy,
diff --git a/src/mesh/RadioLibInterface.h b/src/mesh/RadioLibInterface.h
index 35abcc74b..f940f8908 100644
--- a/src/mesh/RadioLibInterface.h
+++ b/src/mesh/RadioLibInterface.h
@@ -41,20 +41,8 @@ class LockingModule : public Module
{
}
- /*!
- \brief SPI single transfer method.
-
- \param cmd SPI access command (read/write/burst/...).
-
- \param reg Address of SPI register to transfer to/from.
-
- \param dataOut Data that will be transfered from master to slave.
-
- \param dataIn Data that was transfered from slave to master.
-
- \param numBytes Number of bytes to transfer.
- */
- virtual void SPItransfer(uint8_t cmd, uint8_t reg, uint8_t *dataOut, uint8_t *dataIn, uint8_t numBytes);
+ void SPIbeginTransaction() override;
+ void SPIendTransaction() override;
};
class RadioLibInterface : public RadioInterface, protected concurrency::NotifiedWorkerThread