[MOD] Cache tone value on ESP32 (#553)
This commit is contained in:
parent
4a637b44f1
commit
ec94177c2a
1 changed files with 13 additions and 2 deletions
|
@ -272,6 +272,11 @@ RADIOLIB_PIN_STATUS Module::digitalRead(RADIOLIB_PIN_TYPE pin) {
|
||||||
return(cb_digitalRead(pin));
|
return(cb_digitalRead(pin));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
// we need to cache the previous tone value for emulation on ESP32
|
||||||
|
int32_t prev = -1;
|
||||||
|
#endif
|
||||||
|
|
||||||
void Module::tone(RADIOLIB_PIN_TYPE pin, uint16_t value, uint32_t duration) {
|
void Module::tone(RADIOLIB_PIN_TYPE pin, uint16_t value, uint32_t duration) {
|
||||||
#if !defined(RADIOLIB_TONE_UNSUPPORTED)
|
#if !defined(RADIOLIB_TONE_UNSUPPORTED)
|
||||||
if((pin == RADIOLIB_NC) || (cb_tone == nullptr)) {
|
if((pin == RADIOLIB_NC) || (cb_tone == nullptr)) {
|
||||||
|
@ -285,8 +290,13 @@ void Module::tone(RADIOLIB_PIN_TYPE pin, uint16_t value, uint32_t duration) {
|
||||||
#if defined(ESP32)
|
#if defined(ESP32)
|
||||||
// ESP32 tone() emulation
|
// ESP32 tone() emulation
|
||||||
(void)duration;
|
(void)duration;
|
||||||
|
if(prev == -1) {
|
||||||
ledcAttachPin(pin, RADIOLIB_TONE_ESP32_CHANNEL);
|
ledcAttachPin(pin, RADIOLIB_TONE_ESP32_CHANNEL);
|
||||||
|
}
|
||||||
|
if(prev != value) {
|
||||||
ledcWriteTone(RADIOLIB_TONE_ESP32_CHANNEL, value);
|
ledcWriteTone(RADIOLIB_TONE_ESP32_CHANNEL, value);
|
||||||
|
}
|
||||||
|
prev = value;
|
||||||
#elif defined(RADIOLIB_MBED_TONE_OVERRIDE)
|
#elif defined(RADIOLIB_MBED_TONE_OVERRIDE)
|
||||||
// better tone for mbed OS boards
|
// better tone for mbed OS boards
|
||||||
(void)duration;
|
(void)duration;
|
||||||
|
@ -320,6 +330,7 @@ void Module::noTone(RADIOLIB_PIN_TYPE pin) {
|
||||||
// ESP32 tone() emulation
|
// ESP32 tone() emulation
|
||||||
ledcDetachPin(pin);
|
ledcDetachPin(pin);
|
||||||
ledcWrite(RADIOLIB_TONE_ESP32_CHANNEL, 0);
|
ledcWrite(RADIOLIB_TONE_ESP32_CHANNEL, 0);
|
||||||
|
prev = -1;
|
||||||
#elif defined(RADIOLIB_MBED_TONE_OVERRIDE)
|
#elif defined(RADIOLIB_MBED_TONE_OVERRIDE)
|
||||||
// better tone for mbed OS boards
|
// better tone for mbed OS boards
|
||||||
(void)pin;
|
(void)pin;
|
||||||
|
|
Loading…
Add table
Reference in a new issue