From e2d7f413470e306d045e02aac0d8d9728b3ef755 Mon Sep 17 00:00:00 2001 From: Justin Stephens Date: Thu, 2 Dec 2021 15:31:10 -0500 Subject: [PATCH] Revert "Added support for on-the-fly FIFO refilling in FSK." This reverts commit 44b7930a0167622763381f6dd39ce34308580941. --- src/modules/SX127x/SX127x.cpp | 38 ++++++++--------------------------- src/modules/SX127x/SX127x.h | 4 ++-- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/modules/SX127x/SX127x.cpp b/src/modules/SX127x/SX127x.cpp index 5f518a1e..b0f1f8ab 100644 --- a/src/modules/SX127x/SX127x.cpp +++ b/src/modules/SX127x/SX127x.cpp @@ -472,15 +472,6 @@ int16_t SX127x::startTransmit(uint8_t* data, size_t len, uint8_t addr) { state |= _mod->SPIsetRegValue(SX127X_REG_FIFO_TX_BASE_ADDR, SX127X_FIFO_TX_BASE_ADDR_MAX); state |= _mod->SPIsetRegValue(SX127X_REG_FIFO_ADDR_PTR, SX127X_FIFO_TX_BASE_ADDR_MAX); - // write packet to FIFO - _mod->SPIwriteRegisterBurst(SX127X_REG_FIFO, data, len); - - // set RF switch (if present) - _mod->setRfSwitchState(LOW, HIGH); - - // start transmission - state |= setMode(SX127X_TX); - } else if(modem == SX127X_FSK_OOK) { // check packet length if(len >= SX127X_MAX_PACKET_LENGTH_FSK) { @@ -503,29 +494,16 @@ int16_t SX127x::startTransmit(uint8_t* data, size_t len, uint8_t addr) { if((filter == SX127X_ADDRESS_FILTERING_NODE) || (filter == SX127X_ADDRESS_FILTERING_NODE_BROADCAST)) { _mod->SPIwriteRegister(SX127X_REG_FIFO, addr); } - - // Pre-load the FIFO with message before entering TX mode - uint8_t* ind = data; - _mod->SPIwriteRegisterBurst(SX127X_REG_FIFO, ind, min(len, 64)); - ind += min(len, 64); - - // set RF switch (if present) and start transmitting - _mod->setRfSwitchState(LOW, HIGH); - state |= setMode(SX127X_TX); - - // Re-fill the FIFO on-the-fly as bytes are transmitted - while (ind < data + len) { - uint16_t flags = getIRQFlags(); - bool fifo_full = flags >> 15; - - // If FIFO not full, write another byte - if (!fifo_full) { - _mod->SPIwriteRegister(SX127X_REG_FIFO, *ind); - ind++; - } - } } + // write packet to FIFO + _mod->SPIwriteRegisterBurst(SX127X_REG_FIFO, data, len); + + // set RF switch (if present) + _mod->setRfSwitchState(LOW, HIGH); + + // start transmission + state |= setMode(SX127X_TX); RADIOLIB_ASSERT(state); return(ERR_NONE); diff --git a/src/modules/SX127x/SX127x.h b/src/modules/SX127x/SX127x.h index b8347c2c..dc33ec08 100644 --- a/src/modules/SX127x/SX127x.h +++ b/src/modules/SX127x/SX127x.h @@ -12,7 +12,7 @@ // SX127x physical layer properties #define SX127X_FREQUENCY_STEP_SIZE 61.03515625 #define SX127X_MAX_PACKET_LENGTH 255 -#define SX127X_MAX_PACKET_LENGTH_FSK 255 +#define SX127X_MAX_PACKET_LENGTH_FSK 64 #define SX127X_CRYSTAL_FREQ 32.0 #define SX127X_DIV_EXPONENT 19 @@ -601,7 +601,7 @@ class SX127x: public PhysicalLayer { int16_t beginFSK(uint8_t chipVersion, float br, float freqDev, float rxBw, uint16_t preambleLength, bool enableOOK); /*! - \brief Binary transmit method. Will transmit arbitrary binary data up to 255 bytes long. + \brief Binary transmit method. Will transmit arbitrary binary data up to 255 bytes long using %LoRa or up to 63 bytes using FSK modem. For overloads to transmit Arduino String or C-string, see PhysicalLayer::transmit. \param data Binary data that will be transmitted.