From cdf4d6d5ae1dffabc50d66bb2e4b91190835b8c9 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Sat, 1 Jan 2022 19:59:49 +0100 Subject: [PATCH] Removed queue --- main/espnowfunctions.cpp | 92 +++++++++++++++++----------------------- main/espnowfunctions.h | 2 - 2 files changed, 39 insertions(+), 55 deletions(-) diff --git a/main/espnowfunctions.cpp b/main/espnowfunctions.cpp index 8ca954a..97893b3 100644 --- a/main/espnowfunctions.cpp +++ b/main/espnowfunctions.cpp @@ -1,8 +1,6 @@ #ifdef FEATURE_ESPNOW #include "espnowfunctions.h" -#include - #include #include #include @@ -20,7 +18,6 @@ constexpr const char * const TAG = "BOBBY_ESP_NOW"; uint16_t lastYear; // Used for esp-now timesync -std::deque message_queue{}; std::vector peers{}; uint8_t initialized{0}; @@ -36,14 +33,46 @@ extern "C" void onReceive(const uint8_t *mac_addr, const uint8_t *data, int data size_t sep_pos = data_str.find(":"); if (std::string_view::npos != sep_pos) { - std::string_view msg_type = data_str.substr(0, sep_pos); - std::string_view msg = data_str.substr(sep_pos+1, data_str.length()-sep_pos-1); - ESP_LOGD(TAG, "Type: %.*s - Message: %.*s", msg_type.size(), msg_type.data(), msg.size(), msg.data()); + esp_now_message_t msg{ + .content = std::string{data_str.substr(sep_pos+1, data_str.length()-sep_pos-1)}, + .type = std::string{data_str.substr(0, sep_pos)} + }; - message_queue.push_back(esp_now_message_t { - .content = std::string{msg}, - .type = std::string{msg_type} - }); + ESP_LOGD(TAG, "Type: %s - Message: %s", msg.type.c_str(), msg.content.c_str()); + + if (msg.type == "T") + { + if (!receiveTimeStamp || !settings.espnow.syncTime) + return; + + if (const auto result = cpputils::fromString(msg.content); result) + { + onRecvTs(*result); + } + else + { + ESP_LOGW(TAG, "could not parse number: %.*s", result.error().size(), result.error().data()); + } + } + else if (msg.type == "BOBBYT") + { + if (!receiveTsFromOtherBobbycars || !settings.espnow.syncTimeWithOthers) + return; + + if (const auto result = cpputils::fromString(msg.content); result) + { + ESP_LOGI(TAG, "setting current time to %" PRIu64, *result); + onRecvTs(*result, true); + } + else + { + ESP_LOGW(TAG, "could not parse number: %.*s", result.error().size(), result.error().data()); + } + } + else + { + ESP_LOGI(TAG, "Unkown Type: %s - Message: %s", msg.type.c_str(), msg.content.c_str()); + } } else { @@ -183,49 +212,6 @@ void handle() } return; } - - if(message_queue.size()) - { - for (const esp_now_message_t &msg : message_queue) - { - ESP_LOGD(TAG, "queue has processed message of type '%s' with content '%s'", msg.type.c_str(), msg.content.c_str()); - message_queue.pop_front(); - - if (msg.type == "T") - { - if (!receiveTimeStamp || !settings.espnow.syncTime) - return; - - if (const auto result = cpputils::fromString(msg.content); result) - { - onRecvTs(*result); - } - else - { - ESP_LOGW(TAG, "could not parse number: %.*s", result.error().size(), result.error().data()); - } - } - else if (msg.type == "BOBBYT") - { - if (!receiveTsFromOtherBobbycars || !settings.espnow.syncTimeWithOthers) - return; - - if (const auto result = cpputils::fromString(msg.content); result) - { - ESP_LOGI(TAG, "setting current time to %" PRIu64, *result); - onRecvTs(*result, true); - } - else - { - ESP_LOGW(TAG, "could not parse number: %.*s", result.error().size(), result.error().data()); - } - } - else - { - ESP_LOGI(TAG, "Unkown Type: %s - Message: %s", msg.type.c_str(), msg.content.c_str()); - } - } - } } void onRecvTs(uint64_t millis, bool isFromBobbycar) diff --git a/main/espnowfunctions.h b/main/espnowfunctions.h index 99f7726..8c328d6 100644 --- a/main/espnowfunctions.h +++ b/main/espnowfunctions.h @@ -1,7 +1,6 @@ #pragma once #ifdef FEATURE_ESPNOW #include -#include #include #include #include @@ -19,7 +18,6 @@ struct esp_now_message_t extern bool receiveTimeStamp; extern bool receiveTsFromOtherBobbycars; -extern std::deque message_queue; extern std::vector peers; void initESPNow();