diff --git a/src/LoRa_APRS_Tracker.cpp b/src/LoRa_APRS_Tracker.cpp index f57677f..d30ea1c 100644 --- a/src/LoRa_APRS_Tracker.cpp +++ b/src/LoRa_APRS_Tracker.cpp @@ -48,7 +48,7 @@ TinyGPSPlus gps; OneButton userButton = OneButton(BUTTON_PIN, true, true); #endif -String versionDate = "2024.05.13"; +String versionDate = "2024.05.14"; uint8_t myBeaconsIndex = 0; int myBeaconsSize = Config.beacons.size(); diff --git a/src/msg_utils.cpp b/src/msg_utils.cpp index cc47e57..6be0fc8 100644 --- a/src/msg_utils.cpp +++ b/src/msg_utils.cpp @@ -47,7 +47,6 @@ std::vector loadedWLNKMails; std::vector outputMessagesBuffer; std::vector outputAckRequestBuffer; std::vector packet25SegBuffer; -std::vector packet25SegTimeBuffer; bool ackRequestState = false; String ackCallsignRequest = ""; @@ -362,9 +361,11 @@ namespace MSG_Utils { } void clean25SegBuffer() { - if (!packet25SegTimeBuffer.empty()) { - if (millis() - packet25SegTimeBuffer[0] > 25 * 1000) { - packet25SegTimeBuffer.erase(packet25SegTimeBuffer.begin()); + if (!packet25SegBuffer.empty()) { + String deltaTimeString = packet25SegBuffer[0].substring(0, packet25SegBuffer[0].indexOf(",")); + uint32_t deltaTime = deltaTimeString.toInt(); + if ((millis() - deltaTime) > 25 * 1000) { + Serial.println(packet25SegBuffer[0]); packet25SegBuffer.erase(packet25SegBuffer.begin()); } } @@ -374,20 +375,21 @@ namespace MSG_Utils { if (!packet25SegBuffer.empty()) { bool shouldBeIgnored = false; for (int i = 0; i < packet25SegBuffer.size(); i++) { - if (packet25SegBuffer[i].substring(0, packet25SegBuffer[i].indexOf(",")) == station && packet25SegBuffer[i].substring(packet25SegBuffer[i].indexOf(",") + 1) == textMessage) { + String temp = packet25SegBuffer[i].substring(packet25SegBuffer[i].indexOf(",") + 1); + String bufferStation = temp.substring(0, temp.indexOf(",")); + String bufferMessage = temp.substring(temp.indexOf(",") + 1); + if (bufferStation == station && bufferMessage == textMessage) { shouldBeIgnored = true; } } if (shouldBeIgnored) { return false; } else { - packet25SegBuffer.push_back(station + "," + textMessage); - packet25SegTimeBuffer.push_back(millis()); + packet25SegBuffer.push_back(String(millis()) + "," + station + "," + textMessage); return true; } } else { - packet25SegBuffer.push_back(station + "," + textMessage); - packet25SegTimeBuffer.push_back(millis()); + packet25SegBuffer.push_back(String(millis()) + "," + station + "," + textMessage); return true; } } @@ -402,7 +404,6 @@ namespace MSG_Utils { if (lastReceivedPacket.sender!=currentBeacon->callsign) { if (check25SegBuffer(lastReceivedPacket.sender, lastReceivedPacket.message)) { - if (Config.bluetoothType == 0 || Config.bluetoothType == 3) { // agregar validador si cliente BLE esta conectado? BLE_Utils::sendToPhone(packet.text.substring(3)); } else {