diff --git a/main/esp32-lora.c b/main/esp32-lora.c index 715cee5..9bc0d2b 100644 --- a/main/esp32-lora.c +++ b/main/esp32-lora.c @@ -417,6 +417,21 @@ static void IRAM_ATTR lora32_dio_task(void *arg) { // these *should* fire at the same time, defaults to false if(lora->cad_done != NULL) lora->cad_done(lora, cad_detected); } + + if((irqs & IRQ_FHSS_CHANGE) == IRQ_FHSS_CHANGE) { + ESP_LOGI(TAG, "switching channel %d: %d", lora->channel, lora->channels[lora->channel]); + + if(lora->channel == 0 && lora->channels[lora->channel] == 0) continue; + + if(lora->channels[lora->channel] == 0) { + ESP_LOGI(TAG, "reseting to channel 0"); + lora->channel = 0; + } + + lora32_set_frequency(lora, lora->frequency + (lora->channels[lora->channel] * bandwidths[lora->bandwidth])); + + lora->channel++; + } } }