[FSK4] ADded support for interrupt-based timing

This commit is contained in:
jgromes 2022-11-18 17:24:20 +01:00
parent abc7cf179a
commit 2bf5297b32

View file

@ -82,9 +82,7 @@ void FSK4Client::tone(uint8_t i) {
Module* mod = _phy->getMod(); Module* mod = _phy->getMod();
uint32_t start = mod->micros(); uint32_t start = mod->micros();
transmitDirect(_base + _tones[i], _baseHz + _tonesHz[i]); transmitDirect(_base + _tones[i], _baseHz + _tonesHz[i]);
while(mod->micros() - start < _bitDuration) { mod->waitForMicroseconds(start, _bitDuration);
mod->yield();
}
} }
int16_t FSK4Client::transmitDirect(uint32_t freq, uint32_t freqHz) { 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() { 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 !defined(RADIOLIB_EXCLUDE_AFSK)
if(_audio != nullptr) { if(_audio != nullptr) {
return(_audio->noTone()); return(_audio->noTone());