From 14cd5df1e3f840b23af419f1e82e38002de42d28 Mon Sep 17 00:00:00 2001 From: "Morgan 'ARR\\!' Allen" Date: Wed, 17 Nov 2021 19:31:10 -0800 Subject: [PATCH] implement single RX, still needs timeout handling --- include/esp32-lora.h | 1 + main/esp32-lora.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/include/esp32-lora.h b/include/esp32-lora.h index 9fc0b8f..f3d62f3 100644 --- a/include/esp32-lora.h +++ b/include/esp32-lora.h @@ -138,6 +138,7 @@ uint8_t lora32_data_available(lora32_cfg_t *lora); double lora32_calc_datarate(lora32_cfg_t *lora); void lora32_dump_regs(lora32_cfg_t *lora); void lora32_enable_continuous_rx(lora32_cfg_t *lora); +void lora32_enable_single_rx(lora32_cfg_t *lora); void lora32_enable_cad(lora32_cfg_t *lora); void lora32_toggle_reset(lora32_cfg_t *lora); void lora32_send(lora32_cfg_t *config, uint8_t *data, uint8_t len); diff --git a/main/esp32-lora.c b/main/esp32-lora.c index 14f60ff..deef1ce 100644 --- a/main/esp32-lora.c +++ b/main/esp32-lora.c @@ -246,6 +246,18 @@ void lora32_set_spreadfactor(lora32_cfg_t *lora, uint8_t factor) { lora32_write_reg(lora, REG_MODEM_CONFIG_2, (lora32_read_reg(lora, REG_MODEM_CONFIG_2) & 0x0F) | ((factor << 4) & 0xF0)); } +void lora32_enable_single_rx(lora32_cfg_t *lora) { + ESP_LOGD(TAG, "MODE_RX_SINGLE"); + + if(lora->receive != NULL) { + lora32_write_reg(lora, REG_DIO_MAPPING_1, DIO0_MODE_RXDONE); + } + + lora32_standby(lora); + + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_RX_SINGLE); +} + void lora32_enable_continuous_rx(lora32_cfg_t *lora) { ESP_LOGD(TAG, "MODE_RX_CONTINUOUS");