diff --git a/src/shared/radio/SX1278/SX1278.cpp b/src/shared/radio/SX1278/SX1278.cpp index accd5f31a0b474b5c06d4b4d4a3add72fd79fb2c..bed1ae549d6daf57f3b77e8f6f0787c3efa9b5d9 100644 --- a/src/shared/radio/SX1278/SX1278.cpp +++ b/src/shared/radio/SX1278/SX1278.cpp @@ -259,28 +259,15 @@ bool SX1278::send(uint8_t *pkt, size_t len) bus_mgr.lock(SX1278BusManager::Mode::MODE_TX); - // Wait for TX ready - bus_mgr.waitForIrq(RegIrqFlags::TX_READY); + // Wait for TX ready + bus_mgr.waitForIrq(RegIrqFlags::TX_READY); - // Segment a packet that is bigger than the MTU (-1 for the length) - uint8_t pkt_len = std::min(len, FIFO_LEN - 1); - - { - SPITransaction spi(bus_mgr.getBus(), - SPITransaction::WriteBit::INVERTED); - - spi.writeRegister(REG_FIFO, pkt_len); - spi.writeRegisters(REG_FIFO, pkt, pkt_len); - } - - // Wait for packet sent - bus_mgr.waitForIrq(RegIrqFlags::PACKET_SENT); - - pkt += pkt_len; - len -= pkt_len; - bus_mgr.unlock(); + { + SPITransaction spi(bus_mgr.getBus(), + SPITransaction::WriteBit::INVERTED); - last_tx = now(); + spi.writeRegister(REG_FIFO, static_cast<uint8_t>(len)); + spi.writeRegisters(REG_FIFO, pkt, len); } // Wait for packet sent