From a306ef17a84156734c3fe85d1b92c5eb3c5c6f91 Mon Sep 17 00:00:00 2001 From: "Morgan 'ARR\\!' Allen" Date: Fri, 13 Mar 2026 15:06:18 -0700 Subject: [PATCH] convey driver start via lora32_handle_t --- main/esp32-lora.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/main/esp32-lora.c b/main/esp32-lora.c index 6abf405..cbb7e95 100644 --- a/main/esp32-lora.c +++ b/main/esp32-lora.c @@ -109,12 +109,16 @@ void lora32_set_implicit_header(lora32_cfg_t *lora) { void lora32_standby(lora32_cfg_t *lora) { ESP_LOGV(TAG, "MODE_STANDBY"); + xEventGroupSetBits(lora->handle.state, MODE_STANDBY); + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_STANDBY); } void lora32_sleep(lora32_cfg_t *lora) { ESP_LOGV(TAG, "MODE_SLEEP"); + xEventGroupSetBits(lora->handle.state, MODE_SLEEP); + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_SLEEP); } @@ -138,6 +142,8 @@ void lora32_enable_tx(lora32_cfg_t *lora) { else lora32_set_explicit_header(lora); + xEventGroupSetBits(lora->handle.state, MODE_TX); + // zero out receive buffer lora32_write_reg(lora, REG_FIFO_ADDR_PTR, 0); lora32_write_reg(lora, REG_PAYLOAD_LENGTH, 0); @@ -294,6 +300,8 @@ void lora32_enable_single_rx(lora32_cfg_t *lora) { lora32_update_dio_mapping(lora, REG_DIO_MAPPING_1, DIO0_MODE_RXDONE, DIO0_MODE_SHIFT); } + xEventGroupSetBits(lora->handle.state, MODE_RX_SINGLE); + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_RX_SINGLE); } @@ -305,6 +313,8 @@ void lora32_enable_continuous_rx(lora32_cfg_t *lora) { lora32_update_dio_mapping(lora, REG_DIO_MAPPING_1, DIO0_MODE_RXDONE, DIO0_MODE_SHIFT); } + xEventGroupSetBits(lora->handle.state, MODE_RX_CONTINUOUS); + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_RX_CONTINUOUS); } @@ -323,6 +333,8 @@ void lora32_enable_cad(lora32_cfg_t *lora) { ESP_LOGV(TAG, "MODE_CAD_DETECT"); + xEventGroupSetBits(lora->handle.state, MODE_CAD_DETECT); + lora32_write_reg(lora, REG_OP_MODE, MODE_LONG_RANGE_MODE | MODE_CAD_DETECT); } @@ -541,7 +553,8 @@ uint8_t lora32_init(lora32_cfg_t *lora) { ESP_ERROR_CHECK(spi_bus_add_device(lora->spi_host, &devcfg, &lora->spi)); // initialize event groups - lora->handle.events = xEventGroupCreate(); + lora->handle.state = xEventGroupCreate(); + xEventGroupSetBits(lora->handle.state, 0); uint8_t version = lora32_read_reg(lora, REG_VERSION); ESP_LOGD(TAG, "lora32_get_id() == 0x%2X", version);