diff --git a/src/protocols/PhysicalLayer/PhysicalLayer.cpp b/src/protocols/PhysicalLayer/PhysicalLayer.cpp index d96f300f..3b7d870a 100644 --- a/src/protocols/PhysicalLayer/PhysicalLayer.cpp +++ b/src/protocols/PhysicalLayer/PhysicalLayer.cpp @@ -132,11 +132,18 @@ int16_t PhysicalLayer::startReceive() { } int16_t PhysicalLayer::startReceive(uint32_t timeout, RadioLibIrqFlags_t irqFlags, RadioLibIrqFlags_t irqMask, size_t len) { - (void)timeout; - (void)irqFlags; - (void)irqMask; - (void)len; - return(RADIOLIB_ERR_UNSUPPORTED); + RadioModeConfig_t cfg = { + .receive = { + .timeout = timeout, + .irqFlags = irqFlags, + .irqMask = irqMask, + .len = len, + } + }; + + int16_t state = this->stageMode(RADIOLIB_RADIO_MODE_RX, &cfg); + RADIOLIB_ASSERT(state); + return(this->launchMode()); } #if defined(RADIOLIB_BUILD_ARDUINO) @@ -150,10 +157,17 @@ int16_t PhysicalLayer::startTransmit(const char* str, uint8_t addr) { } int16_t PhysicalLayer::startTransmit(const uint8_t* data, size_t len, uint8_t addr) { - (void)data; - (void)len; - (void)addr; - return(RADIOLIB_ERR_UNSUPPORTED); + RadioModeConfig_t cfg = { + .transmit = { + .data = data, + .len = len, + .addr = addr, + } + }; + + int16_t state = this->stageMode(RADIOLIB_RADIO_MODE_TX, &cfg); + RADIOLIB_ASSERT(state); + return(this->launchMode()); } int16_t PhysicalLayer::finishTransmit() { diff --git a/src/protocols/PhysicalLayer/PhysicalLayer.h b/src/protocols/PhysicalLayer/PhysicalLayer.h index 5b159d9b..3d785b6d 100644 --- a/src/protocols/PhysicalLayer/PhysicalLayer.h +++ b/src/protocols/PhysicalLayer/PhysicalLayer.h @@ -151,7 +151,7 @@ struct ReceiveConfig_t { struct TransmitConfig_t { /*! \brief Binary data that will be transmitted. */ - uint8_t* data; + const uint8_t* data; /*! \brief Length of binary data to transmit (in bytes). */ size_t len; @@ -306,7 +306,7 @@ class PhysicalLayer { \param len Packet length, needed for some modules under special circumstances (e.g. LoRa implicit header mode). \returns \ref status_codes */ - virtual int16_t startReceive(uint32_t timeout, RadioLibIrqFlags_t irqFlags, RadioLibIrqFlags_t irqMask, size_t len); + virtual int16_t startReceive(uint32_t timeout, RadioLibIrqFlags_t irqFlags = RADIOLIB_IRQ_RX_DEFAULT_FLAGS, RadioLibIrqFlags_t irqMask = RADIOLIB_IRQ_RX_DEFAULT_MASK, size_t len = 0); /*! \brief Binary receive method. Must be implemented in module class.