From 5fb8db4cfd8a8b44c632078f7793a872bd166b6b Mon Sep 17 00:00:00 2001 From: Alexandre Abadie <alexandre.abadie@inria.fr> Date: Thu, 5 Oct 2017 22:34:50 +0200 Subject: [PATCH] drivers/sx127x: fix set modem logic --- drivers/sx127x/sx127x_getset.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/sx127x/sx127x_getset.c b/drivers/sx127x/sx127x_getset.c index 1da4e987cd..08df09682a 100644 --- a/drivers/sx127x/sx127x_getset.c +++ b/drivers/sx127x/sx127x_getset.c @@ -63,6 +63,20 @@ void sx127x_set_state(sx127x_t *dev, uint8_t state) void sx127x_set_modem(sx127x_t *dev, uint8_t modem) { + if ((sx127x_reg_read(dev, SX127X_REG_OPMODE) & SX127X_RF_LORA_OPMODE_LONGRANGEMODE_ON) != 0) { + dev->settings.modem = SX127X_MODEM_LORA; + } + else { + dev->settings.modem = SX127X_MODEM_FSK; + } + + /* Skip if unchanged to avoid resetting the transceiver below (may end up + * in crashes) */ + if (dev->settings.modem == modem) { + DEBUG("[DEBUG] already using modem: %d\n", modem); + return; + } + DEBUG("[DEBUG] set modem: %d\n", modem); dev->settings.modem = modem; -- GitLab