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