From 3e64e819c740ec4626bae65009825bf1311ddf41 Mon Sep 17 00:00:00 2001 From: jgromes Date: Fri, 18 Nov 2022 17:07:01 +0100 Subject: [PATCH] [RTTY] Added support for interrupt-based timing --- src/protocols/RTTY/RTTY.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/protocols/RTTY/RTTY.cpp b/src/protocols/RTTY/RTTY.cpp index 95d11018..e1994978 100644 --- a/src/protocols/RTTY/RTTY.cpp +++ b/src/protocols/RTTY/RTTY.cpp @@ -407,18 +407,14 @@ void RTTYClient::mark() { Module* mod = _phy->getMod(); uint32_t start = mod->micros(); transmitDirect(_base + _shift, _baseHz + _shiftHz); - while(mod->micros() - start < _bitDuration) { - mod->yield(); - } + mod->waitForMicroseconds(start, _bitDuration); } void RTTYClient::space() { Module* mod = _phy->getMod(); uint32_t start = mod->micros(); transmitDirect(_base, _baseHz); - while(mod->micros() - start < _bitDuration) { - mod->yield(); - } + mod->waitForMicroseconds(start, _bitDuration); } size_t RTTYClient::printNumber(unsigned long n, uint8_t base) { @@ -531,6 +527,9 @@ int16_t RTTYClient::transmitDirect(uint32_t freq, uint32_t freqHz) { } int16_t RTTYClient::standby() { + // ensure everything is stopped in interrupt timing mode + Module* mod = _phy->getMod(); + mod->waitForMicroseconds(0, 0); #if !defined(RADIOLIB_EXCLUDE_AFSK) if(_audio != nullptr) { return(_audio->noTone());