[PHY] Add default implementation of start transmit/receive

This commit is contained in:
jgromes 2025-02-03 20:32:29 +01:00
parent 7ec456dad4
commit d7c00bfa0a
2 changed files with 25 additions and 11 deletions

View file

@ -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() {

View file

@ -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.