From 2bf5297b32217df85e4e00dc5d8ff549b3652c96 Mon Sep 17 00:00:00 2001 From: jgromes Date: Fri, 18 Nov 2022 17:24:20 +0100 Subject: [PATCH] [FSK4] ADded support for interrupt-based timing --- src/protocols/FSK4/FSK4.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/protocols/FSK4/FSK4.cpp b/src/protocols/FSK4/FSK4.cpp index a6f58266..4ec074b9 100644 --- a/src/protocols/FSK4/FSK4.cpp +++ b/src/protocols/FSK4/FSK4.cpp @@ -82,9 +82,7 @@ void FSK4Client::tone(uint8_t i) { Module* mod = _phy->getMod(); uint32_t start = mod->micros(); transmitDirect(_base + _tones[i], _baseHz + _tonesHz[i]); - while(mod->micros() - start < _bitDuration) { - mod->yield(); - } + mod->waitForMicroseconds(start, _bitDuration); } int16_t FSK4Client::transmitDirect(uint32_t freq, uint32_t freqHz) { @@ -97,6 +95,9 @@ int16_t FSK4Client::transmitDirect(uint32_t freq, uint32_t freqHz) { } int16_t FSK4Client::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());