From 899f2fa1ed6a96dffb623fc8748bdc613d25c764 Mon Sep 17 00:00:00 2001 From: qiyueixa Date: Sun, 15 Apr 2018 00:53:08 +0800 Subject: [PATCH] mesh: update mesh libs 1. fix issues on sending beacon caused by too much tx retries on other packets. 2. modify not to scan if rc exists when connect. 3. modify scan dwell time to default 120ms fo root. --- components/esp32/lib | 2 +- .../mesh/internal_transceiver/main/mesh_main.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/components/esp32/lib b/components/esp32/lib index 5fc06965e..04299f48a 160000 --- a/components/esp32/lib +++ b/components/esp32/lib @@ -1 +1 @@ -Subproject commit 5fc06965e5eaa420dc69cbafd35235f508d6acea +Subproject commit 04299f48a7a76609e86c72eb28c9bf53fce9e4fc diff --git a/examples/mesh/internal_transceiver/main/mesh_main.c b/examples/mesh/internal_transceiver/main/mesh_main.c index 936a87da4..ceffbdd3c 100644 --- a/examples/mesh/internal_transceiver/main/mesh_main.c +++ b/examples/mesh/internal_transceiver/main/mesh_main.c @@ -32,7 +32,7 @@ * Variable Definitions *******************************************************/ static const char *MESH_TAG = "mesh_main"; -static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77 }; +static const uint8_t MESH_ID[6] = { 0x77, 0x77, 0x77, 0x77, 0x77, 0x77}; static uint8_t tx_buf[TX_SIZE] = { 0, }; static uint8_t rx_buf[RX_SIZE] = { 0, }; static bool is_running = true; @@ -101,10 +101,10 @@ void esp_mesh_p2p_tx_main(void *arg) while (is_running) { /* normal nodes rather than root do nothing but print */ if (!esp_mesh_is_root()) { - ESP_LOGI(MESH_TAG, "[layer:%d]%s%s[rtableSize:%d]", mesh_layer, + ESP_LOGI(MESH_TAG, "layer:%d, rtableSize:%d, %s%s", mesh_layer, + esp_mesh_get_routing_table_size(), is_mesh_connected ? "CONNECT" : "DISCONNECT", - esp_mesh_is_root() ? "" : "[NODE]", - esp_mesh_get_routing_table_size()) + esp_mesh_is_root() ? "" : "[NODE]") vTaskDelay(10 * 1000 / portTICK_RATE_MS); continue; } @@ -149,7 +149,9 @@ void esp_mesh_p2p_tx_main(void *arg) err, data.proto, data.tos) } } - vTaskDelay(1 * 1000 / portTICK_RATE_MS); + if (route_table_size < 10) { + vTaskDelay(1 * 1000 / portTICK_RATE_MS); + } } vTaskDelete(NULL); } @@ -394,6 +396,11 @@ void app_main(void) memcpy((uint8_t *) &cfg.mesh_ap.password, CONFIG_MESH_AP_PASSWD, strlen(CONFIG_MESH_AP_PASSWD)); ESP_ERROR_CHECK(esp_mesh_set_config(&cfg)); + /* set RSSI threshold for connecting to the root */ + mesh_switch_parent_t switch_paras ; + ESP_ERROR_CHECK(esp_mesh_get_switch_parent_paras(&switch_paras)); + switch_paras.backoff_rssi = -45; + ESP_ERROR_CHECK(esp_mesh_set_switch_parent_paras(&switch_paras)); /* mesh start */ ESP_ERROR_CHECK(esp_mesh_start()); ESP_LOGI(MESH_TAG, "mesh starts successfully, heap:%d\n", esp_get_free_heap_size())